我正在尝试使用php制作长度正好为15个字符的正确的随机数字。我尝试了rand(100000000000000, 900000000000000)
,但它仍然会生成负数和小于15的数字。是否还有其他可以执行此操作的函数,或者我应该只使用rand(0, 9)
15次并连接结果?
答案 0 :(得分:9)
$i = 0;
$tmp = mt_rand(1,9);
do {
$tmp .= mt_rand(0, 9);
} while(++$i < 14);
echo $tmp;
答案 1 :(得分:3)
您使用的是32位平台。要处理这些整数,您需要一个64位平台。
你可以做两次rand并将其保存为字符串,如下所示:
$num1 = rand(100000,999999);
$num2 = rand(100000,999999);
$num3 = rand(100,999);
$endString = $num1.$num2.$num3;
PS。我比我的更喜欢跳跳虎解决方案。
答案 2 :(得分:1)
你走了。
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);
编辑:如果你想削减.00045s的执行时间,
function randNum() { return abs(rand(100000000000000, 900000000000000)); }
答案 3 :(得分:1)
请记住,这将返回一个字符串,而不是实际的整数值。
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);