生成一个随机整数数组

39

我想要做的是生成一个随机整数数组,其中随机值介于最小值和最大值之间。

到目前为止,我想出了以下代码:

int Min = 0;
int Max = 20;

int[] test2 = new int[5];
Random randNum = new Random();
foreach (int value in test2)
{
    randNum.Next(Min, Max);
}

但它还没有完全工作。 我认为我可能只是漏掉了一行或其他什么。 有人能帮我推进正确的方向吗?


2
你实际上没有在每次迭代中给你的数组赋值。 - Jason Down
2个回答

71

您从未给test2数组赋值。尽管您已声明了它,但所有的值都将为0。以下是如何为数组的每个元素分配指定区间内的随机整数:

int Min = 0;
int Max = 20;

// this declares an integer array with 5 elements
// and initializes all of them to their default value
// which is zero
int[] test2 = new int[5]; 

Random randNum = new Random();
for (int i = 0; i < test2.Length; i++)
{
    test2[i] = randNum.Next(Min, Max);
}

或者你可以使用 LINQ:

int Min = 0;
int Max = 20;
Random randNum = new Random();
int[] test2 = Enumerable
    .Repeat(0, 5)
    .Select(i => randNum.Next(Min, Max))
    .ToArray();

第一个代码给了我更多的错误,而且到目前为止,我的C#知识只有两周呢。第二个代码运行得非常好。谢谢你。 - Dante1986

0
你需要在循环中将 random.next 的结果赋值给数组的当前索引。

2
你不能向一个数组中添加内容,因为那是一个列表。如果你在一个foreach循环中这样做了,那么在迭代时集合也会被修改。 - Kieren Johnstone
抱歉,但这仍然是错误的答案,也是一个糟糕的答案:使用 foreach 是为了访问数组的元素,你不能用这种方式填充它们。 - Kieren Johnstone
啊,我完全忽略了原始问题中的foreach循环。 - stephen776

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接