c# - 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|
解决方案
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>
尽可能使用来降低性能
推荐阅读
- django - Django:自定义登录后重定向到同一页面
- git - 订单项的 Github 历史记录
- google-cloud-platform - Terraform 状态文件锁定 GCP 数据存储和 GCS 后端示例
- python - 为什么我的回复是循环而不是整个程序
- python-3.x - DRF 序列化程序未在默认 HTML 表单页面 API 中显示字段(外键和 many2many)。字段在 GET 中可用
- java - 在可选列表中查找字符串
- powershell - Are you able to use PtrToStringAuto to decrypt a secure string in Powershell 7 on macOS?
- delphi - 如何使 ListBox 项具有给定的颜色?
- java - Javac 不是内部或外部命令
- ruby - 使用 Ruby 和 Psych 解析 Unity YAML 场景文件的语法错误