C# で一意の乱数を生成する
ランダムで一意の数値を生成する必要があるアプリケーションの開発では、開発者は System.Random クラスに関する問題に遭遇することがよくあります。 DateTime.Now.Ticks をシードとして使用した場合でも、重複する数値が存在する可能性があります。
重複値の問題を解決する
System.Random.Next() 自体は、生成された数値の一意性を保証しません。より狭い範囲 (0 ~ 10 など) と組み合わせると、重複する値が発生する確率が高くなります。
代替: リストのメンテナンス
この制限を克服するためのより堅牢なアプローチは、生成された数値のリストを維持することです。重複は、潜在的な番号がリストにすでに存在するかどうかを確認することで回避できます。
以下は、この戦略を使用して変更された実装です:
<code class="language-csharp">public Random a = new Random(); public List<int> randomList = new List<int>(); int MyNumber = 0; private void NewNumber() { MyNumber = a.Next(0, 10); if (!randomList.Contains(MyNumber)) randomList.Add(MyNumber); }</code>
このアプローチでは、生成された数値のリストを維持し、重複を除外することで、真に一意の値を確実に作成できます。
以上がC# で非反復乱数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。