Seite 1 von 1

5 verschiedene zufallszahlen generieren ohne viel aufwand

Verfasst: 01.09.2004 14:36
von dr_Alex
ich möchte mit rand 5 verschiedene zahlen haben.
es wäre unsauber wenn ich in einer if abfrage, frage ob die zahl schon vorhanden ist bzw generiert wurde. zB so will ich das nicht haben:

Code: Alles auswählen

$z1=rand(1,69);
$z2=rand(1,69);
$z3=rand(1,69);
$z4=rand(1,69);
$z5=rand(1,69);
if ($z1==$z2) {
$z2=rand(1,69);
}
if ($z2==$z3) {
$z3=rand(1,69);
}
...
und so müsste man jede zahl mit einander vergleichen also ca 25 if abfragen.

könnte man dies nicht irgentwie in einer for oder while lösen?

Verfasst: 01.09.2004 15:17
von dr_Alex
ok hab selber rausgefunden :grin:

Code: Alles auswählen

for ($i=1; $i<6; $i++) {
   $z[$i]['rand']=rand(0,60);	
}
for ($i=1; $i<6; $i++) {
   for ($if=1; $if<6; $if++) {
      while($z[$i]['rand']==$z[$if]['rand']){
         $z[$if]['rand']=rand(0,60);
      }
   }
}
die frage istz nur ob diese lösung wirklich sauber ist. aufjedenfall ist die in der grenze der gebrauchten zahlen variabel.

Verfasst: 01.09.2004 16:52
von dr_Alex
ich musst leider mit bedauern feststellen das mein code nicht geht. gibt es villeicht eine funktion bei php die gleiche zahlen verhindert?

Verfasst: 01.09.2004 19:07
von PhilippK
Erstell ein leeres Array. Dann machst du eine Schleife, die dann abbricht, wenn in dem Array fünf Elemente sind.
In der Schleife legst du die Zufallszahl in eine Variable. Dann prüfst du, ob der Wert der Variable schon im Array enthalten ist ([php:in_array]). Wenn ja, fügst du die Variable dem Array hinzu.

Coden darfst du das aber selbst :-D

Gruß, Philipp

Verfasst: 01.09.2004 22:41
von r4bbIt

Code: Alles auswählen

<?php
function genzahl($zahl=5)
{
	$zahlen=array();
	
	for($i=0; $i<$zahl; $i++)
	{
		$fertig=false;
		$zahlneu = rand(0,9);
		while(in_array($zahlneu, $zahlen))
		{
			$zahlneu = rand(0,9);
		}
		$zahlen[$i]=$zahlneu;
	}
	
	$ausgabe="";
	
	foreach($zahlen as $zahl)
	 $ausgabe.=$zahl;
	
	return $ausgabe;
}
print(genzahl());
?>
nicht perfekt funzt aber.

Verfasst: 02.09.2004 15:43
von dr_Alex
jooo dat geht ja :D

danke euch für die hilfe. eine funktion wie in_array hat mir schon lange gefehlt :D