求一个能生成5位唯一邀请码的算法
大大们,能不能支个招呢?
16 回复
uuid 里截一下?
@leapon 不考虑重复?
存数据库咯,重复了再生成一个咯。
或者打乱的 Base62,然后一直加一咯。
搞一堆36进制的池子,然后随机从池子里取。
来一个 无脑 的 0.0 :
@i5ting 是欠考虑。那就取个基数,每次递增吧
说下场景吧
@qinyang912 如果 base62 的方案可以接受的话,还是用 base36 吧。base62有大小写问题
用部分时间戳数字倒排,然后一个计数器 精确到一定时间段,比如每小时不多于一万人注册,产生的数字就没有问题
@alsotang 反正差不多意思啦。
如果想再乱序点的话,加长一点,后面几位留作当前时间戳。并且 Base36 的字典可以完全打乱,类似于:
"1zdai9eu3cj2hf8wbp4go5yq7m6vrksnxlt"
不限长度的话UUID最好. 非要限制5位的话大概要36^5个占位槽, 可以分段生成, 拿一个队列保存, 用一个取一个,用完放回去, 如果是单线程模型这么做很简单.
前几天刚看到github上有个库,是能够用于游戏的,号称能日生成百万不重复
https://github.com/dylang/shortid 找到了,就是这货
@klausgao 太长了