I am trying to make random numbers that are exactly 15 characters long and positive using php. I tried rand(100000000000000, 900000000000000)
but it still generates negatives and numbers less than 15. Is there another function I am missing that can do this, or should I just use rand(0, 9)
15 times and concatenate the results?
问问题
4505 次
4 回答
9
$i = 0;
$tmp = mt_rand(1,9);
do {
$tmp .= mt_rand(0, 9);
} while(++$i < 14);
echo $tmp;
于 2013-01-02T23:49:05.700 回答
3
您使用的是 32 位平台。要处理这些整数,您需要一个 64 位平台。
您可以执行两次 rand 并将其保存为字符串,如下所示:
$num1 = rand(100000,999999);
$num2 = rand(100000,999999);
$num3 = rand(100,999);
$endString = $num1.$num2.$num3;
PS。我比我更喜欢跳跳虎解决方案。
于 2013-01-02T23:50:14.810 回答
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);
编辑:如果您想将执行时间缩短 0.00045 秒,
function randNum() { return abs(rand(100000000000000, 900000000000000)); }
于 2013-01-02T23:49:19.647 回答
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);
于 2013-01-02T23:50:10.473 回答