在一个范围内生成和存储唯一的随机数
本文关键字:存储 唯一 随机数 范围内 一个 | 更新日期: 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--;
}