srand not random???

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/srand_not_random_200315/page_1 - zur Vollversion wechseln!


LTD schrieb am 04.10.2008 um 23:55

Kann mir jemand sagen warum srand nicht random ist? Jedes mal wenn jemand http://www.markusklug.com ansurft, kommt das Zitat von Elisabeth Opelanik als erstes (Nr.0 im Array)... erst danach kommen andere. Wo kann da der Fehler liegen?


Code: PHP
function rnd(){
$path = "bla";
$handle = fopen($path, "r");
$lines=file($path); //$lines is an array 
$linecount=(count($lines)-1);
srand(microtime()*1000000);
$linenum = rand(0,$linecount);
$parts=explode("::",$lines[$linenum]);
echo htmlentities($parts[count($parts)-2])."<br><br>".htmlentities($parts[count($parts)-1]);


prayerslayer schrieb am 05.10.2008 um 00:21

so wie ich das seh setzt du mit srand() den anfangswert für den zufallsgenerator fest. wenn du die zeile weglässt, sollte es funktionieren.

http://us.php.net/srand
http://us.php.net/rand


LTD schrieb am 05.10.2008 um 00:40

Habe es schon ohne srand versucht, dann geht es gleich schlecht bzw. bei refresh noch schlechter...

Habe jetzt srand*srand eingebaut, ich hoffe das klappt nun =).


Spikx schrieb am 05.10.2008 um 02:40

Es kann auch Zufall gewesen sein, dass "beim Ersten mal" immer dasselbe Zitat kommt. Es sind nun mal Zufallswerte ;). Darüberhinaus macht es theoretisch keinen Unterschied auf der Server Seite, ob jemand das script zum ersten mal aufruft, oder nicht.


LTD schrieb am 05.10.2008 um 11:15

Zitat von Spikx
Es kann auch Zufall gewesen sein, dass "beim Ersten mal" immer dasselbe Zitat kommt. Es sind nun mal Zufallswerte ;). Darüberhinaus macht es theoretisch keinen Unterschied auf der Server Seite, ob jemand das script zum ersten mal aufruft, oder nicht.

Daran habe ich zuerst auch gedacht, aber ca. 15x Zufall in Folge bei 4 unterschiedlichen Leuten/Browsern/Betriebssystem is auffällig häufig hehe

Wie auch immer, mit 2x srand scheint die Sache zu klappen...

Thx 4 Help!


mat schrieb am 05.10.2008 um 11:25

Mach einfach nur srand(time()). Das sollte problemlos funktionieren!

Edit: Bist du dir sicher, dass das line-Array und der linecount passt?


jives schrieb am 05.10.2008 um 12:10

Alternativ sollte shuffle() und ein anschließendes array_pop() auch ein Element zufällig aus dem Array auswählen.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025