ユーザーがシステムに新しいアイテムを追加するとき、そのアイテムに対して一意の非インクリメント疑似ランダム 7 桁コードを生成したいと考えています。作成されるアイテムの数は数千 (<10,000) にすぎません。
一意である必要があり、2 つのアイテムが同じ情報を持つことはないため、ハッシュを使用できますが、他の人と共有できるコードである必要があります。したがって、7 桁です。
私の最初の考えは、乱数の生成をループし、それがまだ使用されていないことを確認し、使用されている場合はすすぎ、繰り返すことでした。衝突の可能性が低いことを考えると、これは不快な場合でも合理的な解決策だと思います。
この質問への回答は、すべての未使用の数字のリストを生成し、それらをシャッフルすることを提案しています。おそらく、このようなリストをデータベースに保持することもできますが、比較的めったに発生しないものに対して 10,000,000 件のエントリについて話しているのです。
誰かがより良い方法を持っていますか?