我需要一个16位数的唯一编号。
我可以使用以下2个例子,这会生成更多唯一编号吗?
<?php>
$a=rand(1000000000000000,9999999999999999);
$b=rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
echo($a);
echo($b);
?>
答案 0 :(得分:1)
第一个会生成更多的随机数,因为它会在3个额外的位置允许“0”而第二个不会。
答案 1 :(得分:1)
$a=rand(1000000000000000,9999999999999999);
创建一个数字,范围从1000000000000000到9999999999999999,总计 8999999999999999可能的数字。
$b=rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
从1000到9999创建4个数字,总共8999 * 8999 * 8999 * 8999 = 6558084485964001数字。
与第二种解决方案相比,第一次变异将产生大约37%的可能数量。
这将从0000000000000000到9999999999999999创建一个随机的16位数字:
$c = sprintf('%016d',rand(0,9999999999999999));
答案 2 :(得分:1)
$a
更随机,因为它可以包含全部零,除了前一个1
的位置 - 而$b
不能。
但这不是我的观点
你的$ b语句表明你的随机数很可能是一个字符串。
那么为什么不通过填充零来扩展你的范围,使它仍然是16位?
$a = str_pad(rand(0,9999999999999999), 16, "0", STR_PAD_LEFT);
此处还有1000亿可能性。