c# - 生成不重复的随机数.C#

标签 c#

<分区>

大家好我想在 C# 的同一行生成 6 个不同的数字,但我面临的问题是一些数字在同一行重复。这是我的代码

var rand = new Random();
List<int> listNumbers = new List<int>();
int numbers = rand.Next(1,49);
for (int i= 0 ; i < 6 ;i++)
    {
         listNumbers.Add(numbers);
         numbers = rand.Next(1,49);
    }

我的输出在某处

17 23 23 31 33 48

最佳答案

检查您生成的每个数字与之前的数字:

List<int> listNumbers = new List<int>();
int number;
for (int i = 0; i < 6; i++)
{
  do {
     number = rand.Next(1, 49);
  } while (listNumbers.Contains(number));
  listNumbers.Add(number);
}

另一种方法是创建一个可能的数字列表,然后从列表中删除您选择的数字:

List<int> possible = Enumerable.Range(1, 48).ToList();
List<int> listNumbers = new List<int>();
for (int i = 0; i < 6; i++)
{
  int index = rand.Next(0, possible.Count);
  listNumbers.Add(possible[index]);
  possible.RemoveAt(index);
}

关于c# - 生成不重复的随机数.C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30014901/

相关文章:

c# 对自定义列表进行排序

c# - Async Await 和 ContinueWith 未按预期工作

c# - 如何使用 LINQ 转置二维集合中的维度?

c# - 性能计数器不工作

c# - ASP MVC、延迟加载和 JSON 序列化。如何填写其他属性?

c# - 下面的规则设计还有哪些解决方案?

c# - 在c#.net中使用crystal sap report根据条件同时打印多个不同数据的报表

c# - 给定一个 Uri 和一个 UriTemplate,如何获取模板参数值?

c# - 将文档与代码分开

c# - 解析字符串以查找大于特定长度的数字