我尝试使用以下代码生成随机数并将它们存储在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个值,这是不会发生的。可能是什么错误?
答案 0 :(得分:1)
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--;
}