【发布时间】:2011-12-26 02:04:34
【问题描述】:
我想写一个只使用数字作为短字符串的 URL 缩短器。
我不想数,我希望下一个新数字是随机的(或伪随机)。
起初认为算法看起来像这样(伪代码):
do
{
number = random(0,10000)
}
while (datastore.contains(number))
datastore.store(number, url)
这个实现的问题是:由于数据存储包含的数字越多,循环执行多次的可能性就越大。性能会随着时间的推移而下降。
难道没有更好的方法来获取尚未使用的随机数吗?
【问题讨论】:
-
另外请注意,如果您使用较短的数字而不是较长的 UUID,这些数字会变得可猜测,即人们只需尝试几个数字就可以看到其他人注册的 URL。这可能是也可能不是问题。
标签: performance algorithm random