避免重复:C#随机数生成器
你的代码旨在生成六个介于1到49之间的随机数。然而,这些数字可能包含重复项,这在类似彩票的场景中是不可接受的。为了解决这个问题,我们将探讨一种在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# 中生成六个唯一的随机数?的详细内容。更多信息请关注PHP中文网其他相关文章!