5

所以,我有一个 PHP 脚本:

<?
rand(1000000000000,9999999999999);

预期结果是一个 13 位数字。

但它返回了一些奇怪的数字,如:

987419207
1032717476
-455563764

有谁知道发生了什么?


PHP: 5.2.17

操作系统:在 Debian Squeeze 和 Windows 7 上测试,均为 64 位


解决方案(解决方法)

<?
echo rand(10000,99999).rand(10000000,99999999);
4

3 回答 3

5

使用 getrandmax() 查看可以从 rand() 获得的最大值,这显然是一个溢出问题。

您可以使用 2 个这个 int 并制作一个更长的整数,调用 rand 获得 6 位数字,再次调用 7 位数字,这只是一个想法。

于 2012-12-10T14:21:41.487 回答
4

我认为 10000000000000 它不是一个有效的整数!

输出

getrandmax();
于 2012-12-10T14:21:17.647 回答
0

使用像BCMathGMP这样的 bignum 库。GMP 更新,似乎有更好的 API,但这只是我的看法

于 2012-12-10T14:35:12.657 回答