可能重複:
Create Random Number Sequence with No Repeats獲取10000+獨特的隨機數(性能)
我想編寫只使用數字作爲短字符串的URL縮短。
我不想數了,我希望下一個新號碼是隨機的(或僞隨機)。
在第一個想到的算法則是這樣的(僞代碼):
do
{
number = random(0,10000)
}
while (datastore.contains(number))
datastore.store(number, url)
這種實現的問題是:由於數據存儲包含更多的數字,更有可能的是,循環將執行它多次。性能會隨着時間的推移而降低。
沒有更好的方法來獲得一個尚未使用的隨機數字嗎?
相關:http://stackoverflow.com/questions/693880/create-random-number-sequence-with-no-repeats – Thilo
看看[唯一隨機數在O(1)?](http:/ /堆棧溢出。com/questions/196017/unique-random-numbers-in-o1) – Gumbo
另請注意,如果您使用的是短數字而不是較長的UUID,則這些數字會變得可以猜測,即人們可以看到其他人只通過嘗試幾次數字。這可能也可能不是問題。 – Thilo