在 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中文网其他相关文章!