3

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?

4

4 回答 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 回答