Php 带唯一整数的种子rand()是否返回唯一的数字?

Php 带唯一整数的种子rand()是否返回唯一的数字?,php,mysql,random,Php,Mysql,Random,表中有id自动递增主键列和serialint列。如何将7位唯一随机数插入序列号 我们可以说带有唯一id的种子rand()返回唯一值吗 FLOOR(1111111 + (RAND( <uniqe id> ) * 8888888)) 地板(1111111+(兰特()*888888)) 是否可以使用phpmt_srand和mt_rand完成此操作?否,一般不保证。使用输出足够大的加密散列函数,这样就可以接受1/2^位的失败率。或者在php中使用一个计数器(如果希望输出看起来是随机的,可

表中有
id
自动递增主键列和
serial
int列。如何将7位唯一随机数插入序列号

我们可以说带有唯一id的种子
rand()
返回唯一值吗

FLOOR(1111111 + (RAND( <uniqe id> ) * 8888888))
地板(1111111+(兰特()*888888))

是否可以使用php
mt_srand
mt_rand
完成此操作?

否,一般不保证。使用输出足够大的加密散列函数,这样就可以接受1/2^位的失败率。或者在php中使用一个计数器(如果希望输出看起来是随机的,可以结合一些先验加密洗牌)@sascha like
random\u int
?它有什么独特之处?我想我已经很清楚了。使用rng不期望任何事情(播种很困难;rng之间存在巨大差异)。使用加密哈希冲突的概率很低(雪崩效应),但也有可能(在您的受限用例中,输出位调整可能不可能;7位)。如果需要唯一性,请使用基于计数器的方法(您必须保持某些状态)(存储大约40MB的秘密排列和映射;或者根据已经使用的方法进行采样和检查;经典计算/内存权衡)。您可能希望在上创建一个问题,以检查您是否正在创建安全漏洞,但我认为您最好使用unique_id作为密钥,RAND作为数据创建hmac,然后截断到所需的长度,(循环直到您具有unique。需要锁表t写入;以防止竞争条件)