2009-10-23 70 views
1

我需要一個隨機的4位數字簡單的RAND()的問題

現在即時通訊使用蘭特(1000,9999)總是給我一個4位數字,但我消除了0000-0999的可能結果。

你怎麼填一個隨機數?

(也這最終將被添加到字符串做我需要轉換INT爲字符串?)

感謝

回答

12

在像PHP這樣的腳本語言中,你不必投射99%的案例。

填充可以使用

sprintf("%04u", rand(0, 9999)); 

說明

sprintf的第一個參數指定

  • %停留在第二,第三,第四等參數的形式來完成。第一個%被第二個參數取代,第二個%被第三個等替換。
  • 0停留在向左填充0的行爲。
  • 4停留爲「至少4個字符應該打印」
  • u保留爲無符號整數。
+0

+1我還是給你支票 – Crash893 2009-10-23 14:09:15

+0

+1。很好的解析格式字符串。我總是要看他們:-) – Joey 2009-10-23 14:12:57

3

快速和骯髒......如何這樣做:

rand(10000,19999) 

,並採取最後四位數:

substr(rand(10000, 19999), 1, 4) 
+1

聰明!我必須說。思考開箱即用。 – 2009-10-23 14:06:31

+1

雖然這會起作用,但在代碼中遇到這個問題會讓我停下來想知道發生了什麼。 – 2009-10-23 14:06:52

+0

@LFSR:你說得對,這就是爲什麼它很快和「髒」。 :-) – Tenner 2009-10-23 14:07:56

6
sprintf("%04d", rand(0,9999)) 

應該做你想做的事

+0

該死的。一秒爲時已晚 - – Etan 2009-10-23 14:05:56

+0

+1對你們兩人來說,但檢查去Rossel – Crash893 2009-10-23 14:07:50

+1

其實你有一百萬代表點即將給予etan – Crash893 2009-10-23 14:08:42

1

您可以使用str_pad()sprintf()格式化您的字符串:

$rand = rand(0, 9999); 
$str1 = str_pad($rand, 4, '0', STR_PAD_LEFT); 
$str2 = sprintf('%04u', $rand); 
3
str_pad(mt_rand(0, 9999), 4, '0', STR_PAD_LEFT); 

使用,而不是()mt_rand蘭特(),它的更好。