获得10000多个独特的随机数(性能)

lei*_*ifg 0 random algorithm performance

可能重复:
创建无重复的随机数序列

我想写一个只使用数字作为短字符串的URL缩短器.

我不想数数,我希望下一个新数字是随机的(或伪随机).

首先,思想算法看起来像这样(伪代码):

do 
{
 number = random(0,10000)
}
while (datastore.contains(number))

datastore.store(number, url)
Run Code Online (Sandbox Code Playgroud)

此实现的问题是:由于数据存储区包含更多数字,因此循环将多次执行的可能性越大.性能会随着时间的推移而降低.

是否有更好的方法来获取尚未使用的随机数?

jus*_*tin 5

1)用连续值填充数组

2)洗牌阵列