2013-01-02 49 views
3

我正在嘗試使用隨機數字確切地爲15個字符,並且使用php。我試過rand(100000000000000, 900000000000000),但它仍然會產生負數,數字小於15.是否有另一個功能,我錯過了,可以做到這一點,或者我應該只使用rand(0, 9) 15次,並連接結果?長度爲15個字符且爲正數的隨機數字

+0

對我沒有負面影響 – jeremy

+2

爲什麼值得的是,'rand'沒有被破壞,只是你使用的數字大於你機器上'int'的大小,這就是爲什麼你會看到奇數結果。 – climbage

+0

可能的重複[在PHP中使用long int](http://stackoverflow.com/questions/8647125/using-long-int-in-php) –

回答

7
$i = 0; 
$tmp = mt_rand(1,9); 
do { 
    $tmp .= mt_rand(0, 9); 
} while(++$i < 14); 
echo $tmp; 
+1

int mt_rand(int $ min,int $ max)是走。我會用這個答案。 +1 –

+0

Thx。將很快將這個標記爲答案。 – Mike

+0

樂意幫忙:] – Tigger

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)); } 
+1

請記住,這可能會返回0作爲第一個'數字',技術上會是一個14位數字。 – Supericy

+0

哎呦。注意力不足。固定。 –

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); 
3

您正在使用32位平臺。要處理這些整數,你需要一個64位平臺。

你可以做蘭特兩次,並保存爲一個字符串,像這樣:

$num1 = rand(100000,999999); 
$num2 = rand(100000,999999); 
$num3 = rand(100,999); 
$endString = $num1.$num2.$num3; 

PS。我喜歡比我的更好的解決方案。

+0

可以安全走到2bil(10chr)所以一個mt_rand 7位數字和另一個8位數字將做到這一點,也99999999而不是9000000 –

+0

你是對的。我不確定這個數字,所以我玩得很安全。 –

+1

max = 2,147,483,647所以有9位有效數字 –

相關問題