J'ai un simple morceau de code PHP qui nécessite la création d'un nombre aléatoire. Cependant, même si l'entrée est toujours positive, elle renvoie parfois une sortie négative.Pourquoi rand() retournerait-il une valeur négative lorsque les valeurs min et max sont positives?
Voici mon code de débogage:
$debt = rand($this->gdp * 0.02, $this->gdp * 0.17);
echo "<p>GDP: ".$this->gdp." rand(".$this->gdp * 0.02." , ".$this->gdp * 0.17.") = <strong>".$debt."</strong></p>";
Voici un exemple de sortie:
GDP: 219254674605 rand(4385093492.1 , 37273294682.85) = 75276999
GDP: 345015694865 rand(6900313897.3 , 58652668127.05) = -1636353016
GDP: 90445390920 rand(1808907818.4 , 15375716456.4) = -165604705
GDP: 3412849650 rand(68256993 , 580184440.5) = 347516196
GDP: 2939111315 rand(58782226.3 , 499648923.55) = 119181875
GDP: 26369065 rand(527381.3 , 4482741.05) = 3632416
GDP: 215838135 rand(4316762.7 , 36692482.95) = 28784811
GDP: 511763530 rand(10235270.6 , 86999800.1) = 39954394
GDP: 42416245 rand(848324.9 , 7210761.65) = 3974882
GDP: 75090235 rand(1501804.7 , 12765339.95) = 5201966
Alors, pourquoi un rand()
de deux nombres positifs donner un rendement négatif?
Toute aide serait grandement appréciée! Parce que vous voyez un débordement d'entier dans les arguments.
Pensez à utiliser mt_rand() à la place – Psytronic
Psytronic: qui change * quoi * exactement? http://de.php.net/manual/en/function.mt-rand.php montre que 'mt_rand' utilise aussi les arguments' int'. – Joey
J'allais juste sur la note sous la description de rand: Remarque: Sur certaines plateformes (comme Windows), getrandmax() est seulement 32768. Si vous avez besoin d'une plage plus grande que 32768, spécifier min et max vous permettra de créez une plage plus grande que celle-ci, ou envisagez d'utiliser mt_rand() à la place. – Psytronic