在一个范围内生成和存储唯一的随机数

本文关键字:存储 唯一 随机数 范围内 一个 | 更新日期: 2023-09-27 17:51:23

我尝试了以下代码来生成随机数并将它们存储在c#中的HashSet中:

class program
{
  static void Main(String[] args)
  {
    Random r=new Random();
    HashSet <int> h = new HashSet<int>();
    for (int j=0;j<9;++j)
    {
  h.Add(r.Next(9));
    }
    int [] array = h.ToArray();
    foreach(int i in array)
  Console.WriteLine(i);
    Console.ReadLine();
   }
}

每次执行程序时,显示的元素数量不同。因为我使用一个循环来存储9个值,所以我希望显示9个值,但这并没有发生。可能的误差是什么?

在一个范围内生成和存储唯一的随机数

HashSet不包含重复项。你的循环运行9次,但只有唯一的数字被添加到HashSet .将你的数字直接添加到你的数组,你应该看到9个数字显示。或者使用更大的范围来生成随机数。顺便说一句,您可以验证HashSet中有多少数字像这样,在for循环之后:

Console.WriteLine(h.Count);

或者你可以像这样改变你的for循环:

for (int j = 0; j < 9; ++j)
{
    if(!h.Add(r.Next(9))) j--;
}