ホームページ >バックエンド開発 >C++ >重複のない一意の乱数を生成するにはどうすればよいですか?

重複のない一意の乱数を生成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-12 13:47:43776ブラウズ

How Can I Generate Unique Random Numbers Without Duplicates?

乱数ジェネレーターの重複を避ける

宝くじやその他のシナリオで乱数を生成する場合、同じ行の数字が一意であることを確認することが重要です。当初提供されていたコードはこの問題に対処していないため、重複が発生した可能性があります。

重複した問題の解決

この問題を解決するには、生成された数値をコレクションに保存する必要があります。新しい番号が選択されるたびに、その番号がセット内にすでに存在するかどうかを確認します。存在する場合は、一意の番号が見つかるまで新しい番号を生成します。

さまざまな方法を使用する

あるいは、より効率的なアプローチは、1 から 49 までの一連の数字を生成し、それらをランダムにシャッフルし、シャッフルされたシーケンスから最初の 6 つの数字を選択することです。これにより、定期的なチェックを必要とせずに一意性が確保されます。

このメソッドを使用して改良されたコードは次のとおりです:

<code>var rnd = new Random();
var randomNumbers = Enumerable.Range(1, 49).OrderBy(x => rnd.Next()).Take(6).ToList();</code>

このコードは、ランダムなシーケンスを生成し、それをシャッフルして、重複がないことが保証された最初の 6 つの数字を選択します。

以上が重複のない一意の乱数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。