performance - 获得 10000+ 个唯一的随机数(性能)

标签 performance algorithm random

<分区>

Possible Duplicate:
Create Random Number Sequence with No Repeats

我想编写一个仅使用数字作为短字符串的 URL 缩短器。

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

一开始以为算法是这样的(伪代码):

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

datastore.store(number, url)

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

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

最佳答案

1) 用顺序值填充数组

2) shuffle数组

关于performance - 获得 10000+ 个唯一的随机数(性能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078562/

相关文章:

javascript - 在底部呈现阻塞延迟与移动脚本

mysql - 关于mysql执行顺序1和raid(1)?

python - KDTree Python 实现细节

javascript - 在 Javascript 中合并 n 个排序数组

random - 为什么垃圾值不能充当随机数?

c - 如何在C中生成随机 float

php - 如何让PHP运行得更快?

javascript - UIWebView 性能与 JS onclick 功能

c# - list of list优化构建字典

java - StackOverflowError - 向堆中添加一个值