我写了一个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>";
}
但是在10位数之后,php会生成科学记数,例如 1.0E + 19 ,并且生成的随机数是一团糟。
我想是因为我的硬件模仿(操作系统:Win XP 32位)。
我能做些什么呢?有什么帮助吗?
感谢。
答案 0 :(得分: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";
}
答案 1 :(得分:8)
您可以使用BC Math Functions来克服限制。或者,如果您不打算使用随机数进行计算,则可以创建一个随机的20位数字符串。类似的东西:
$num = '';
for ($i = 0; $i < 20; $i++)
$num .= mt_rand(0, 9);
echo $num;
答案 2 :(得分:0)
例如,
<?php
echo rand() . "\n";
echo rand() . "\n";
echo rand(5, 15);
?>
答案 3 :(得分:0)
我建立在“明星”的反应之上。我想要25行,25个随机生成的数字:
<?php
$num = '';
while($i < 25)
{
for ($n = 0; $n < 25; $n++)
$num .= mt_rand(0, 9);
echo $num . "</br>";
$num = '';
$i++;
}
?>