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
Please also mark the comments that contributed to the solution of the article
Content-ID: 1594364591
Url: https://administrator.de/contentid/1594364591
Printed on: December 2, 2024 at 17:12 o'clock
3 Comments
Latest comment
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..