Zufälliges Wort muss mindestens einige definierte Buchstaben enthalten
Hallo,
ich habe eine kleine Herausforderung, dass ein Zufällig erstelltes Wort bestimmte Zeichen mindestens einmal enthalten muss.
Bisher kann ich ein Wort erstellen und eines der bestimmten Zeichen zufällig einsetzen,
ohne sicherzustellen, dass am ende jedes der bestimmten Zeichen mindestens einmal vorgekommen ist.
Bzw. es muss so oft vorkommen wie es in $fixcharacter drinsteht.
Bspw. 2x f bei $fixcharacter bedeutet mindestens 2xf im finalen Wort.
Hat da jemand eine Idee?
Danke
ich habe eine kleine Herausforderung, dass ein Zufällig erstelltes Wort bestimmte Zeichen mindestens einmal enthalten muss.
Bisher kann ich ein Wort erstellen und eines der bestimmten Zeichen zufällig einsetzen,
ohne sicherzustellen, dass am ende jedes der bestimmten Zeichen mindestens einmal vorgekommen ist.
Bzw. es muss so oft vorkommen wie es in $fixcharacter drinsteht.
Bspw. 2x f bei $fixcharacter bedeutet mindestens 2xf im finalen Wort.
Hat da jemand eine Idee?
$wort="123456789abcdefghijklmno" #dummy
for($n=0;$n -lt 100;$n++){ #100 random words
$m=0
$word=""
$fixcharacter="irfsfM" #each character at least once
$numberfixcharacter=$fixcharacter.Length #get number of fixed characters
$positions=Get-Random -InputObject 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 -Count $numberfixcharacter #generate random position for fixcharacter
#$positions
for($m=0;$m -lt 25; $m++){
if(!$positions.Contains($m)){ #if position is one of the generated random positions, insert random letter of fixcharacter
$character=-join ((65..90) | Get-Random -Count 1 | % {[char]$_})
$word+=$character
}else{
$word+=Get-Random -Inputobject $fixcharacter.ToCharArray()
}
}
$word
}
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1594364591
Url: https://administrator.de/contentid/1594364591
Ausgedruckt am: 17.11.2024 um 23:11 Uhr
3 Kommentare
Neuester Kommentar
Kürzer gehts so
$passlength = 100
$chars = 48..57 + 65..90 + 97..122 | %{[char]$_}
$fixed = 'irfsfM'.ToCharArray()
$final = (((1..($passlength-$fixed.Count)) | %{$chars | Get-Random -Count 1}) + $fixed | Get-Random -Count $passlength) -join ''
$final
Vielleicht auch so:
..
EHfZJDrKLUYsFiMRQGQXPBPFf
KIKOVNKiYfPVMrNMJFsfVIAMN
WIrNAiIKWYDGCfHVMQsUNCVNf
LiCKWBIQAMAOLIffGKAWOrOKs
ZRVTOCAHErIZNTSMKfNYifsWD
VfFsMiCUTPEYHJKfXRRCDRXLr
..
Ich war nicht schnell genug..
$fixcharacter="irfsfM"
$wordlength=25
$wordcount=100
$partlength=$wordlength-$fixcharacter.Length
for($n=0;$n -lt $wordcount;$n++){
$word=""
for($m=0;$m -lt $partlength; $m++){
$character=-join ((65..90) | Get-Random -Count 1 | % {[char]$_})
$word+=$character
}
$word+=$fixcharacter
$word = -join ($word.ToCharArray() | Sort-Object {Get-Random})
$word
}
..
EHfZJDrKLUYsFiMRQGQXPBPFf
KIKOVNKiYfPVMrNMJFsfVIAMN
WIrNAiIKWYDGCfHVMQsUNCVNf
LiCKWBIQAMAOLIffGKAWOrOKs
ZRVTOCAHErIZNTSMKfNYifsWD
VfFsMiCUTPEYHJKfXRRCDRXLr
..
Ich war nicht schnell genug..