首页 > 解决方案 > C#为什么在随机数中得到一个零数

问题描述

我正在尝试使用随机数创建一个数组列表。但有时我的结果为零。我不懂为什么。

如果有人可以解释,我将不胜感激。

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|

标签: c#arraysrandom

解决方案


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 + "|");
}

请注意,当前的方法非常耗性能,因为对于我们每次都遍历整个数组以检查它是否存在的每个新随机值。您可以通过HashSet<int>尽可能使用来降低性能


推荐阅读