PHP兰特(10000000000000,9999999999999)返回"-114888782"

dmm*_*mmd 5 php

所以,我有一个PHP脚本:

<?
rand(1000000000000,9999999999999);
Run Code Online (Sandbox Code Playgroud)

预期结果是13位数字.

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

987419207
1032717476
-455563764
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么?


PHP:5.2.17

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


解决方案(解决方法)

<?
echo rand(10000,99999).rand(10000000,99999999);
Run Code Online (Sandbox Code Playgroud)

Lui*_*lez 5

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

你可以使用这个int的2并做一个更长的一个,调用rand为6位数,再为7位数,只是一个想法.