2017-11-29 3 views
0

sah ich einige Leute zwischen einer Reihe von zwei Zahlen Zufallszahlen zu erzeugen versuchen, mit nur:Unterschied zwischen rand (min, max) und rand()/getrandmax()

$random_num = rand($min, $max); 

, während ich andere Leute sehen, mit etwas kompliziert wie „Dividing rand() durch die maximale Zufallszahl, multipliziert es mit dem Bereich und fügen sie die Startnummer:

$random_num = $min + ($max - $min) * (rand()/getrandmax()); 

wo $ min wird die Startnummer und $ max ist die Endnummer.

Ich würde gerne wissen, was ist der Unterschied zwischen diesen beiden Möglichkeiten, ist einer besser als der andere, wenn ja, warum?

Dank

Antwort

0

Erstere gibt Ihnen eine ganze Zahl im Bereich:

$min = 1; 
$max = 100; 
echo rand($min, $max); 

25 

Letzteres gibt Ihnen einen Schwimmer im Bereich:

echo $min + ($max - $min) * (rand()/getrandmax()); 

25.653779622937 

Other than that, der einzige Unterschied Sie müssen sich darüber Sorgen machen, dass rand() aus Sicherheitsgründen nicht als ausreichend angesehen wird. Wenn Sie kryptographisch starke (d. H. Nicht vorhersagbare) Zufallszahlen benötigen, verwenden Sie random_int() oder openssl_random_pseudo_bytes().