我正在尝试使用php生成正好15个字符长且为正数的随机数。我尝试了rand(100000000000000, 900000000000000)
,但它仍会生成负数和小于15的数字。我是否遗漏了其他能够完成此操作的函数,或者我应该使用rand(0,9)
15次并连接结果?
我正在尝试使用php生成正好15个字符长且为正数的随机数。我尝试了rand(100000000000000, 900000000000000)
,但它仍会生成负数和小于15的数字。我是否遗漏了其他能够完成此操作的函数,或者我应该使用rand(0,9)
15次并连接结果?
$i = 0;
$tmp = mt_rand(1,9);
do {
$tmp .= mt_rand(0, 9);
} while(++$i < 14);
echo $tmp;
mt_rand()
有什么特别之处? - Eboubaker您正在使用32位平台。要处理这些整数,需要64位平台。
您可以执行两次rand并将其保存为字符串,如下所示:
$num1 = rand(100000,999999);
$num2 = rand(100000,999999);
$num3 = rand(100,999);
$endString = $num1.$num2.$num3;
附注:我认为Tigger的解决方案比我的好。
给你。
function moreRand($len) {
$str = mt_rand(1,9);
for($i=0;$i<$len-1;$i++) {
$str .= mt_rand(0, 9);
}
return $str;
}
echo moreRand(15);
编辑:如果您想要减少0.00045秒的执行时间,
function randNum() { return abs(rand(100000000000000, 900000000000000)); }
function randNum($length)
{
$str = mt_rand(1, 9); // first number (0 not allowed)
for ($i = 1; $i < $length; $i++)
$str .= mt_rand(0, 9);
return $str;
}
echo randNum(15);