我正在尝试使用随机数创建数组列表。但有时我的结果为零。我不明白为什么。
如果有人能解释一下,我将不胜感激。
int[] number = new int[6];
Random rnd = new Random();
for (int i = 0; i < number.Length; i++)
{
int random = rnd.Next(1, 26);
if (!number.Contains(random))
{
number[i] = random;
}
}
foreach (int nr in number)
{
Console.Write("|" + nr + "|");
}
//results
|6||12||0||22||25||11|
最佳答案
int[] number = new int[6];
此处创建的数字数组默认为 int
值即 0
在某些情况下,您的代码存在问题,因为检查
if (!number.Contains(random))
您可以更改您的代码以包含一个循环来保证您的随机数不在数组中。
int[] number = new int[6];
Random rnd = new Random();
for (int i = 0; i < number.Length; i++)
{
int random = rnd.Next(1, 26);
while (number.Contains(random))
{
random = rnd.Next(1, 26);
}
number[i] = random;
}
foreach (int nr in number)
{
Console.Write("|" + nr + "|");
}
请注意,对于每个新的随机值,我们每次都遍历整个数组以检查它是否存在,因此当前的方法非常耗费性能。您可以使用 as HashSet<int>
来降低性能如果可能的话
关于C# 为什么在随机数中得到一个零数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65438455/