我想生成6位数字。 现在这项工作很棒,但偶尔会生成4位数字。不经常但有时会这样。为什么?
$num = rand(000000, 999999);
答案 0 :(得分:5)
$num = rand(100000, 999999);
也许这样做了:)
答案 1 :(得分:4)
如果您想使用6位数字填充从000000
到999999
生成数字,则可以使用str_pad
功能。
$rand = rand(0, 999999);
echo str_pad($rand, 6, '0', STR_PAD_LEFT);
答案 2 :(得分:1)
rand(000000, 999999)
等于rand(0, 999999)
它将返回0到999999之间的数字。在 90%的所有情况下,数字介于100000和999999之间,您将获得 6位数编号即可。这就是为什么它大部分时间都适合你
但在 10%的情况下,该数字小于100000 且仅包含 1到5位(所有数字之间的数字) 1和99999 ..不难发现1或2位数仍然不太可预测,然后是4或5位数)
要解决您的问题,您必须从rand(100000, 999999)
获取一个数字,但这不包含任何以0开头的数字!第一个数字将始终为1和9。
其他答案已经显示了从0到9获得6位数的不错解决方案。另一个简单的方法就是:
for($i = 0; i < 6; i++)
$rand_digit[$i] = rand(0,9);
答案 3 :(得分:0)
正如其他人所说的那样,您可以将$num = rand(000000, 999999);
更改为$num = rand(100000, 999999);
,但可能会出现需要6位数字,但其值低于100000的情况。 001103.您仍然可以使用$num = rand(000000, 999999);
,但您可以使用以下内容:
$num = rand(000000, 999999);
$print_num = sprintf("%06d", $num);
这不会改变数字,只会给它一个6位数的格式。
答案 4 :(得分:0)
http://php.net/manual/en/function.rand.php
注意:
警告
最小最大范围必须在getrandmax()范围内。即(max-min)<= getrandmax()否则,rand()可能会返回劣质的随机数。
所以,另一个注意事项:
注意:在某些平台(例如Windows)上,getrandmax()仅为32767。如果您需要一个大于32767的范围,则指定min和max将允许您创建一个大于此范围的范围,或者考虑使用 mt_rand( )。