randomize, aber keine doppelten

Shooter2k

Erfahrenes Mitglied
Hallo Forum,

ich habe mal wieder ein kleines problemchen ;) .
Es geht um Zufallszahlen wie zB

$zahl = rand(1,99);

$Zahl gibt mir zwar die zahlen zwischen 1 und 99 aus, aber es tauchen auch doppelte zahlen auf wie zB 2x die 5 etc..

Gibt es einen ähnlichen Befehl in php um dies ausschließen zu können? Oder eine andere schreibweise, damit es funktioniert ?

Vielen Dank
Mit freundlichen Grüßen
Henry
 
Speichere einfach alle schon generierten Zufallszahlen in einem Array und prüfe nach der Generierung der nächsten Zahl, ob diese bereits im Array vorhanden ist.
 
Ich dachte mir, ich lasse die anderen nicht dumm sterben und veröffentliche mal mein code ;)

PHP:
$max = 5;
$arr[0] = "";
for($i=1;$i<=$max;$i++){
$zufall = rand(1,10);

if (!in_array ($zufall, $arr)) {
$arr[] = $zufall;  
}
}

for($x=1;$x<=count($arr);$x++){
echo $arr[$x]."<br>";
}
 
Hallo,

ich bin Anfäger und habe auch Probleme PHP Code zu verstehen, kannst du mir mal bitte deinen fertigen Code nochmal so dahin schreiben wie ein Buch, also so das ich exakt bei jeder Zeile nachlesen kann was dort passiert:

Beispiel:

PHP:
$max = 5;  // es wird eine Variable mit Namen $max gebildet und dem Inhalt 5
$arr[0] = "";  // keine Ahnung
for($i=1;$i<=$max;$i++){  // noch weniger Ahnung
$zufall = rand(1,10);  // Auch keine Ahnung

if (!in_array ($zufall, $arr)) {  // keine Ahnung
$arr[] = $zufall;    // keine Ahnung
}  // Klammer zu
} // Klammer zu

for($x=1;$x<=count($arr);$x++){ // Keine Ahnung
echo $arr[$x]."<br>";  // Keine Ahnung
}
 
Ich versuch es mal ;)

PHP:
 $max = 5;  // max == die anzahl der Durchläufe
$arr[0] = "";  // für die spätere in_array abfrage ( damit kein fehler kommt, wenn nichts im array gesetzt ist)

for($i=1;$i<=$max;$i++){  // for schleife zähle von 1 bis $max(5) 
$zufall = rand(1,10);  // gibt $max(5) mal eine zufallszahl von 1 bis 10 aus

if (!in_array ($zufall, $arr)) {  // wenn nicht zufallszahl im array $arr dann füge zufall zum array hinzu
$arr[] = $zufall;    // fügt zufall zum array hinzu
}  // 
} // 

// auslesen des arrays ( zufallszahlen ) 
for($x=1;$x<=count($arr);$x++){ // x = 1 , zähle solange x <= gesamtanzahl der arrayelemente ( count ) 
echo $arr[$x]."<br>";  // gibt die zahlen aus 
}

Hoffe konnte dir damit ein wenig helfen
 
PHP:
$max = 5;  // es wird eine Variable mit Namen $max gebildet und dem Inhalt 5 
$arr[0] = "";  // das erste array-element bekommt den wert 0
for($i=1;$i<=$max;$i++){  // var $i ist 1, solange i kleiner oder gleich $max ist, wird $i um eins erhöht
$zufall = rand(1,10);  // zufallszahl zwischen 1 und 10 wird in $zufall gepackt

if (!in_array ($zufall, $arr)) {  // ist $zufall noch nicht im $arr enthalten dann...
$arr[] = $zufall;    // wird ein neues array-element mit dem wert von $zufall erzeugt
}  // Klammer zu 
} // Klammer zu 

for($x=1;$x<=count($arr);$x++){ // $x ist 1; $x wird solange um 1 erhöht bis es genausohoch ist wie die anzahl der array-elemente im array $arr.
echo $arr[$x]."<br>";  // ausgabe des $x-ten arrayelements
}
 
Ja danke euch Leute, das versteh ich jetzt schon besser, ich werde es mir in Ruhe die nächsten Tage ansehen und melde mich gegebenenfalls in dem Tread hier wieder.
 
Zurück