2015-04-28 39 views
1

我需要生成一個隨機4位數字,但不包括8代和9代。隨機4位數字不包括數字8和9

這是我現在使用的代碼,但它顯然不排除8和9,

rand(pow(10, 4 - 1), pow(10, 4) - 1); 
+0

當你說「排除8和9」時,你的意思是在任何地方?或以8或9結尾的數字。 –

+2

因此,或許實際要求是「八進制數」?所以['decoct()'](http://php.net/decoct)。 – mario

回答

2

這也可以。

$allowedNumbers = range(0, 7); 
$digits = array_rand($allowedNumbers, 4); 
$number = ''; 
foreach($digits as $d){ 
    $number .= $allowedNumbers[$d]; 
} 

echo $number; 

好處在於您可以通過創建允許的數字數組來指定允許的字符。它也可以讓你包含字母或單詞中的任何字符。

+0

'array_rand()'也是不錯的技巧! (由於'array_rand()'返回鍵,它可以是任何數據類型的任何數字數組;也OP需要4位數,所以很快改變3至4 :) – Rizier123

+0

@ Rizier123是的,我忘了關鍵的東西,並修復它。然而,只是偶然,這將返回相同的結果,因爲範圍的調用將具有與值相同的鍵(因爲範圍從0開始就像鍵一樣)。 –

2

這應該爲你工作:

在這裏,我剛剛得到的隨機數與mt_rand()然後我將它轉換爲基數8(0-7,意味着不是8或9)與base_convert()。最後,我只需要輸入substr()的前4位數字。

echo $number = substr(base_convert(mt_rand(), 10, 8), 0, 4); 
2

有點像?

$randomNumber = rand(0,7) . rand(0,7) . rand(0,7) . rand(0,7);