可能性の重複取得:
Create Random Number Sequence with No Repeats10000 +ユニークな乱数(パフォーマンス)
を私は短い文字列として数字を使用して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