rand(000000,999999)有时会生成4位数字

时间:2013-11-22 01:29:22

标签: php

我想生成6位数字。 现在这项工作很棒,但偶尔会生成4位数字。不经常但有时会这样。为什么?

$num = rand(000000, 999999);

5 个答案:

答案 0 :(得分:5)

$num = rand(100000, 999999);

也许这样做了:)

答案 1 :(得分:4)

如果您想使用6位数字填充从000000999999生成数字,则可以使用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( )