Php 我使用random_int()和uniqid()生成随机字符串

Php 我使用random_int()和uniqid()生成随机字符串,php,Php,下面是我用来生成随机字符串的代码,有没有可能重复 <?php echo random_int(100,999).substr(uniqid(),-4); ?> 是的,事实上,您很可能会得到一个副本。考虑下面的测试: $arr = []; $i = 0; while (1) { echo ++$i . PHP_EOL; $val = random_int(100,999).substr(uniqid(),-4); if (in_array($val, $a

下面是我用来生成随机字符串的代码,有没有可能重复

<?php

echo random_int(100,999).substr(uniqid(),-4);

?>

是的,事实上,您很可能会得到一个副本。考虑下面的测试:

$arr = [];
$i = 0;
while (1) {
    echo ++$i . PHP_EOL;
    $val = random_int(100,999).substr(uniqid(),-4);
    if (in_array($val, $arr)) break;
    $arr[] = $val;
}
在第一次尝试复制时,我用了不到5000次迭代。
100%保证字符串唯一的唯一方法是将其与集合中的其他字符串进行比较,如果与其中一个字符串匹配,则重试。如果您需要的是唯一的,只需使用自动增量。

是的,有机会。是的!如上所述,没有比较是不可能知道的(除非外部逻辑或特性保证您有这样的行为)。您需要检查值是否在生成之前生成,因此需要存储所有以前生成的值。粗略的信封背面计算表明,这最多可以生成66435个唯一字符串。只需要一小部分就可以达到50%的概率生成一个副本。看到了。非常感谢大家,我会查看所有的评论。随机字符串将用于什么?