Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Zufallszahl
Frage
Kann mir jemand den Quellcode für einen absolut sicheren Zufallszahl nennen.
bisher benutze ich:
rand(1,100)
aber es kommt immer mal vor das die Zahl dann doch doppelt hintereinander vergeben wurde.
Antwort 1 von TVW
Absolut sicher ist kompliziert. Aber wenn du den Zufallszahlengenerator richtig initialisierst, werden die Zahlen abhängig von der Systemzeit (in ms) generiert.
Antwort 2 von ferodim
versuche es doch mal mit mtz_rand ist wesentlich besser
Def.: int mt_rand ([int min [, int max]])
vorher natürlich mit mt_srand() einen neuen Startwert festlegen, falls das nicht klappt kannst du ja dieses probieren
function generate_num ($num_len = xxx) { //xxx- groesse der zahl
$dat= "";
mt_srand ((double) microtime() * 1000000); //startwert setzen
while (strlen($dat)<$num_len) {
$a = chr(mt_rand (0,255)); //generieren einzeln ausgeben
if (eregi("^[0-9]$", $a)){ //wenn zahl
$dat = $dat.$c; //einzeln aneinanderfuegen
}
}
return ($dat);
}
diese funktion startest du dann im script
$zufall=generate_num();
sollte eigentlich keine doppelten zahlen ergeben -teste es aus
Def.: int mt_rand ([int min [, int max]])
vorher natürlich mit mt_srand() einen neuen Startwert festlegen, falls das nicht klappt kannst du ja dieses probieren
function generate_num ($num_len = xxx) { //xxx- groesse der zahl
$dat= "";
mt_srand ((double) microtime() * 1000000); //startwert setzen
while (strlen($dat)<$num_len) {
$a = chr(mt_rand (0,255)); //generieren einzeln ausgeben
if (eregi("^[0-9]$", $a)){ //wenn zahl
$dat = $dat.$c; //einzeln aneinanderfuegen
}
}
return ($dat);
}
diese funktion startest du dann im script
$zufall=generate_num();
sollte eigentlich keine doppelten zahlen ergeben -teste es aus

