我想用lcg_value()产生一个自然数(0到x之间的正整数)。这是我从函数的实际源代码中看到的:
/*
* 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.
*/现在,我如何将浮点数转换为自然数,这样我就不会丢失信息/熵。目前我只是这样做:
$number = pow(2,31) * lcg_value();然而,我有一种直觉,它并不完美。2^62怎么样?或者2^31-334?或者2^62-334?我不知道。
发布于 2010-11-14 02:42:57
浮点型或整型都是由平台绑定的
integer 整数的大小取决于平台,尽管最大值约为20亿是常用值(即32位有符号)。64位平台的最大值通常约为9E18。PHP不支持无符号整数。自PHP4.4.0和PHP5.0.5以来,整数大小可以使用常量PHP_INT_SIZE确定,最大值可以使用常量PHP_INT_MAX确定。
float 浮点数的大小取决于平台,但最大值为~1.8e308,精度约为14位小数位( 64位IEEE格式)。
为了保持最高的浮点数精度,你可以引用http://www.php.net/manual/en/function.bcmul.php
https://stackoverflow.com/questions/4174005
复制相似问题