Php 哪个更独特?

Php 哪个更独特?,php,unique,Php,Unique,我需要一个16位的唯一数字。我可以使用以下两个示例,哪个示例将生成更多的唯一数字 <?php> $a=rand(1000000000000000,9999999999999999); $b=rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999); echo($a); echo($b); ?> 第一个将生成更多的随机数,因为它将在第二个不允许的3个额外点中允许“0” $a=rand(100000000000

我需要一个16位的唯一数字。
我可以使用以下两个示例,哪个示例将生成更多的唯一数字

<?php>
$a=rand(1000000000000000,9999999999999999);
$b=rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
echo($a);
echo($b);
?>

第一个将生成更多的随机数,因为它将在第二个不允许的3个额外点中允许“0”

$a=rand(1000000000000000,9999999999999999);
创建一个介于10000000000000到99999999999999之间的数字,使总数89999999999999个可能的数字

$b=rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
创建从1000到9999的4个数字,总计8999*8999*8999*8999=6558084485964001个数字

$b=rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
与第二种解决方案相比,第一种变化将产生大约37%的可能数字

这将创建一个从0000000000000000到999999999999的随机16位数字:

$c = sprintf('%016d',rand(0,9999999999999999));

$a
更随机,因为它可以包含除前面的
1
位置之外的所有零,而
$b
不能

但这不是我的观点

您的$b语句表明您的随机数很可能是字符串

那么,为什么不通过填充零来扩大范围,使其仍然是16位数字呢

$a = str_pad(rand(0,9999999999999999), 16, "0", STR_PAD_LEFT);

这里还有额外的10000000000000种可能性

你为什么不测试不同的方法呢?@Uchiha有关系吗?我需要的是一个数字,最好不是一个字符串。它应该是一个16位的数字。任何其他创建16位唯一ID的方法?只有数字应该在那里。看我答案中的解决方案c)。