2012-12-15 22 views
0

我有這樣串連mt_rand或大mt_rand

var_dump(randomDigits(20)); 
function randomDigits($numDigits) { 
    if ($numDigits <= 0) { 
     return ''; 
    } 

    return mt_rand(0, 9) . randomDigits($numDigits - 1); 
} 

echo "<br />"; 

var_dump(randomDigits2(20)); 
function randomDigits2($numDigits) { 
    if ($numDigits <= 0) { 
     return ''; 
    } 

    return mt_rand(1000, 9999) . randomDigits($numDigits - 4); 
} 

var_dump(randomDigits3(20)); 
function randomDigits3($numDigits) { 
    $digits = ''; 

    for ($i = 0; $i < $numDigits; ++$i) { 
     $digits .= mt_rand(0, 9); 
    } 

    return $digits; 
} 

代碼中的所有3個功能產生20位。但你會選擇哪個,爲什麼?如果這兩個都不好,請舉個例子嗎?在此先感謝

+0

既不 - 爲什麼使用遞歸的時候一個簡單的循環會更有效 –

+0

@MarkBaker,問題更新。所以第三種方法比較好?或者你有任何產生隨機數的好例子? –

+2

三是絕對更好。其次,如果$ numDigits不是4的倍數,則不起作用;對於1和2來說,遞歸是一個昂貴的開銷 –

回答

0

我會去爲一個循環,保持簡單

<?php 

function random_number($length = 20) 
{ 
    $number = ''; 
    for ($i = 0; $i < $length; $i++) $number .= mt_rand(0,9); 
    return $number; 
} 

echo random_number();