首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成PHP的lcg_value()的自然数?

生成PHP的lcg_value()的自然数?
EN

Stack Overflow用户
提问于 2010-11-14 02:15:21
回答 1查看 293关注 0票数 1

我想用lcg_value()产生一个自然数(0到x之间的正整数)。这是我从函数的实际源代码中看到的:

代码语言:javascript
复制
/*
 * 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.
 */

现在,我如何将浮点数转换为自然数,这样我就不会丢失信息/熵。目前我只是这样做:

代码语言:javascript
复制
$number = pow(2,31) * lcg_value();

然而,我有一种直觉,它并不完美。2^62怎么样?或者2^31-334?或者2^62-334?我不知道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4174005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档