我写了一个PHP脚本来生成1到99999999999999999999之间的随机值(即20 9).
脚本是这样的:
$maxq=20;
for($i=1;$i<=$maxq;$i++) {
$min=pow(10,$i);
$max=(pow(10,$i)*10)-1;
echo $min."<br>";
echo $max."<br>";
echo mt_rand($min,$max)."<br>----<br>";
}
Run Code Online (Sandbox Code Playgroud)
但是在10位数之后,php会生成像1.0E + 19这样的科学符号,并且生成的随机数是一团糟.
我想是因为我的硬件模仿(操作系统:Win XP 32位).
我能做些什么呢?任何帮助?
谢谢.
str*_*ger 10
您可以生成n个随机数字并将它们连接成一个大字符串.
function randomDigits($numDigits) {
if ($numDigits <= 0) {
return '';
}
return mt_rand(0, 9) . randomDigits($numDigits - 1);
}
// Or an iterative approach
function randomDigitsLame($numDigits) {
$digits = '';
for ($i = 0; $i < $numDigits; ++$i) {
$digits .= mt_rand(0, 9);
}
return $digits;
}
$maxq = 20;
for ($i = 1; $i <= $maxq; $i++) {
echo $i . "<br>\n";
echo randomDigits($i) . "<br>\n----<br>\n";
}
Run Code Online (Sandbox Code Playgroud)
您可以使用BC数学函数来克服限制.或者,如果您不打算使用随机数进行计算,则可以创建一个随机的20位数字符串.就像是:
$num = '';
for ($i = 0; $i < 20; $i++)
$num .= mt_rand(0, 9);
echo $num;
Run Code Online (Sandbox Code Playgroud)