phpbar.de logo

Mailinglisten-Archive

[php] rand()

[php] rand()

Hartmut Holzgraefe hartmut_(at)_six.de
Mon, 17 Apr 2000 15:28:36 +0200


Sven Hoexter wrote:
> 
> Am Mon, 17 Apr 2000, schrieb Mark Kronsbein:
> > Jens Kohl wrote:
> > > ich das mit rand(3000,4000); versucht, allerdings kommt da immer die gleiche
> > > Zahl raus. egal wie oft ich auf reload drücke oder sonstiges.
> >
> > Du mußt den Zufallsgenerator erst noch anschmeißen.
> > Schau dir mal srand() an.
> Da hat mich ein Freund auch letztens drauf hingewiesen aber er
> konnte mir keine Erklärung liefern was dieses seeden ist bzw. was
> es tut. Hat da jemand eine Erklärung für mich?
> 
> Gerne auch PM.
> 
> Cu,
> Sven
> 
> --
> ** Durchgehend geöffnet: http://www.php-center.de **
> Die PHP-Liste: mailto:php_(at)_infosoc.uni-koeln.de
> http://infosoc.uni-koeln.de/mailman/listinfo/php
void srand(int seed);

Legt einen internen Startwert für den Zufallsgenerator in rand()() fest. 
Gleiche Startwerte führen auch jeweils zu derselben
Pseudo-Zufallssequenzen,
daher ist es üblich, diese über die aktuelle Uhrzeit festzulegen:  ...
(http://www.phpcenter.de/de-html-manual/function.srand.html)

Es sind halt nur _Pseudo_zufallszahlen, die nach einem deterministischen
Algorithmus erzeugt werden. Die Verteilung der Werte ist dabei nach
statistischen Kriterien hinreichend zufällig (bei mt_rand() mehr, bei
rand()
nicht ganz so perfekt), um als Zufallsinput für statistische oder
kryptografische Zwecke dienen zu können, andererseits aber durch
den Altogrithmus und den Startwert festgelegt, so daß reproduzierbare
Ergebnisse möglich sind.

Deshalb liefert ein rand() ohne vorheriges srand() oder bei vorherigem
srand() mit immer gleichem Parameter auch immer dieselben Werte.
Will man es wirklich zufällig, so benutzt man für srand() einen 
nich deterministischen Startwert, wie z.B. die aktuelle Uhrzeit in
Mikrosekunden. Diese hängt vom Startzeitpunkt des Skriptes ab und
ist somit hinreichend zufällig bzw. nicht vorhersehbar. 

Wem _pseudo_ nicht zufällig genug ist, der kann sich in der Natur
bedienen, z.B. beim Grundrauschen elektronischer Schaltungen oder
beim radioaktiven Zerfall, aber dann brauchts extra Hardware ...

--
Hartmut Holzgraefe         hartmut_(at)_six.de           http://www.six.de


php::bar PHP Wiki   -   Listenarchive