Je veux produire un nombre naturel (un entier positif entre 0 et x) en utilisant lcg_value(). Voilà ce que je peux voir à partir du code source de la fonction:Générer un nombre naturel de PHP lcg_value()?
/*
* combinedLCG() returns a pseudo random number in the range of (0, 1).
* The function combines two CGs with periods of
* 2^31 - 85 and 2^31 - 249. The period of this function
* is equal to the product of both primes.
*/
Maintenant, comment pourrais-je transformer ce flotteur dans un nombre naturel de sorte que je ne perde pas d'informations/entropie. Actuellement, je le fais juste comme ceci:
$number = pow(2,31) * lcg_value();
Cependant, j'ai le sentiment dans mon intestin que ce n'est pas parfait. Que diriez-vous de 2^62? Ou peut-être 2^31-334? Ou 2^62-334? Je ne sais pas.
Pourquoi diviser, multiplier non? – kennytm
Désolé, c'était une faute de frappe. :) – Tower
Comment 334 s'applique-t-il à cette situation? – poke