单机的小项目,后台内部用,不需要开放,要求就是给数据生成一个 8 位纯数字的序列号,本身不需要包含什么含义,只要能通过序列号找到这个数据,不重复。
数据量也很小,可能一年都不会超过 1000 个,所以我在数据库设置了唯一索引后直接就用生成随机数的函数了,如下:
mt_rand(10000000,99999999);
但刚好我同事看到,说建议我改成:
str_shuffle(mt_rand(10000000,99999999));
说这样更好,更随机,重复的概率更低。
感觉不太对劲,我个人感觉这样不会更随机吧?但我对函数的底层的东西没什么深入研究。
我 google 了一下,但我可能搜索姿势不太对没找到完全相同的场景,但我看到有类似的代码,答案有提到说 str_shuffle 不会增加额外的熵。
是不是就是意思这样做不会增加随机性也不会让重复的概率变低?
所以发这个贴子来问问大家,谢谢!如果有相关的资料可以让我加深理解就更好了!