php 如何使随机数唯一性

有个业务逻辑需要生成一个只有数字的字符串,为了使这个字符串唯一
我已经把数字的长度调整为十几位,但是每次都生成几万个随机数,还是有重复的可能性
我想的是在这个逻辑上加上事务,可是可能产生几十万的事务,
MySQL 表方面加上唯一约束感觉也不太好
每次都判断唯一性效率不行,而且这是每次产生几十万的数据
还是这个问题 :有什么好的方式可以使随机数唯一性
期待所有的回复 感谢!

    /**
     * 生成随机数 速度约 7s / 100w (每7s 100万) 
     * @param  [type] $len [description]
     * @return [type]      [description]
     */
    public static function rand_int($len = 16)
    {
        $str = '';
        for($i = 0; $i < $len; $i++)
        {
            $str .= rand(0,9);
        }
        return $str;
    }
哈士奇WWW
浏览 638回答 4
4回答

慕婉清6462132

推荐这个 SnowFlake

ibeautiful

随机生成, 不会唯一的.随机池就那么大, 总会碰撞的. 如果是同一台机器, 使用 uniqid() 就行. 其它的, 需要保存结果, 判断存在生. 你从哪感觉出mysql unique索引不好的? 判断依据是什么?

GCT1015

简单粗暴的方法:提前生成一堆的唯一字符串库,使用时直接从这个字符库中取
打开App,查看更多内容
随时随地看视频慕课网APP