2009-10-23 219 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兰特(),它的更好。