Hallo zusammen!
Ich wollte ein Script schreiben, welches mir zwischen 20 und 50 Zufallszahlen ausgibt, von denen aber keine doppelt vorkommen darf.
Die erste For-Schleife checkt ob schon genug Zufallszahlen vorhanden sind.
Dann wird innerhalb der While-Schleife eine neue Zufallszahl erzeugt.
Im nächsten For wird überprüft, ob in dem Array der nicht doppelten Zufallszahlen die soeben erzeugte Zufallszahl schon vorhanden ist. Wenn ja, kommt die Bedingung der While-Schleife zum Tragen, wenn nein, dann wird die While-Schleife verlassen und die nicht doppelte Zufallszahl in das Array gespeichert.
Schließlich möchte ich alle gefundenen Zufallszahlen ausgeben lassen.
So zumindest der Plan.
Da ich noch nicht lange, bzw. nicht intensiv, mit Php arbeite vermute ich es handelt sich um einen Fehler mit dem Array, konnte aber nicht finden, was das Problem ist.
Deshalb bitte ich hiermit um Hilfe. Hoffentlich kann mir jemand sagen, wo der Bug steckt.
Danke im Vorraus,
k.
Ich wollte ein Script schreiben, welches mir zwischen 20 und 50 Zufallszahlen ausgibt, von denen aber keine doppelt vorkommen darf.
Die erste For-Schleife checkt ob schon genug Zufallszahlen vorhanden sind.
Dann wird innerhalb der While-Schleife eine neue Zufallszahl erzeugt.
Im nächsten For wird überprüft, ob in dem Array der nicht doppelten Zufallszahlen die soeben erzeugte Zufallszahl schon vorhanden ist. Wenn ja, kommt die Bedingung der While-Schleife zum Tragen, wenn nein, dann wird die While-Schleife verlassen und die nicht doppelte Zufallszahl in das Array gespeichert.
Schließlich möchte ich alle gefundenen Zufallszahlen ausgeben lassen.
So zumindest der Plan.
Da ich noch nicht lange, bzw. nicht intensiv, mit Php arbeite vermute ich es handelt sich um einen Fehler mit dem Array, konnte aber nicht finden, was das Problem ist.
Code:
$howOftenBreak = rand(20,50); $whereBreak = array(); $whereBreakLength = count($whereBreak); for ($b=0; $b<$howOftenBreak; $b++){ $break = false; while ($break == false){ $breakPoint = rand(0,130); $break = true; for ($a=0; $a<$whereBreakLength; $a++){ if ($breakPoint == $whereBreak[$a]){ $break = false; } } $whereBreak[] = $breakPoint; } } for ($c=0; $c<$whereBreakLength; $c++){ echo $whereBreak[$c]; }
Danke im Vorraus,
k.
Kommentar