質問:
連続して重複する番号がないように、6 つの固有の宝くじ番号を生成するプログラムを作成するにはどうすればよいですか?
最初のコード スニペット:
<code class="language-csharp">// 使用随机数对象生成6个随机数 int randomNumber1 = random.Next(1, 49); int randomNumber2 = random.Next(1, 49); int randomNumber3 = random.Next(1, 49); int randomNumber4 = random.Next(1, 49); int randomNumber5 = random.Next(1, 49); int randomNumber6 = random.Next(1, 49); textBox1.Text = randomNumber1.ToString(); textBox2.Text = randomNumber2.ToString(); textBox3.Text = randomNumber3.ToString(); textBox4.Text = randomNumber4.ToString(); textBox5.Text = randomNumber5.ToString(); textBox6.Text = randomNumber6.ToString();</code>
質問:
最初のコード スニペットでは乱数を生成できますが、同じ行に重複する数値が存在する可能性があります。
解決策:
一意の乱数を生成するには、生成された乱数をコレクションに保存し、新しい乱数がそれぞれすでに存在するかどうかを確認する必要があります。重複が見つかった場合は、一意の番号が見つかるまで新しい乱数が生成されます。
あるいは、より効率的なアプローチを使用することもできます。1 から 49 までの一連の数字を生成し、OrderBy メソッドと rnd.Next() メソッドを使用してそれをシャッフルし、シャッフルされたシーケンスから最初の 6 つの数字を選択します。
<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 サイトの他の関連記事を参照してください。