重複を避ける: C# 乱数ジェネレーター
あなたのコードは、1 から 49 までの 6 つの乱数を生成するように設計されています。ただし、これらの番号には重複が含まれる可能性があり、宝くじのようなシナリオではこれは受け入れられません。この問題を解決するために、C# で一意の乱数を生成する効率的な方法を検討します。
解決策:
生成された数値をコレクションに保存します。新しい番号が生成されるたびに、その番号がセット内にすでに存在するかどうかを確認します。存在する場合は、一意の番号が見つかるまで別の番号の生成を続けます。
このソリューションを実装するコードの修正バージョンは次のとおりです:
<code class="language-csharp">var randomNumbers = new List<int>(); var random = new Random(); while (randomNumbers.Count < 6) { int randomNumber = random.Next(1, 50); // 生成1到49之间的随机数 if (!randomNumbers.Contains(randomNumber)) { randomNumbers.Add(randomNumber); } }</code>
あるいは、次の戦略を採用することもできます:
デッキをシャッフルし、方法を選択します:
このアプローチのコードは次のとおりです:
<code class="language-csharp">var rnd = new Random(); var randomNumbers = Enumerable.Range(1, 49).OrderBy(x => rnd.Next()).Take(6).ToList();</code>
このアプローチでは、カスタム ループや追加の重複チェックを必要とせずに、一意の乱数の生成が保証されます。
以上がC# で 6 つの一意の乱数を生成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。