【发布时间】:2015-06-25 10:46:42
【问题描述】:
我正在尝试用包含 45 个数字的 Enumerable.Range 列表中的 6 个随机数填充二维数组的每一行。每次在数组的特定行中输入 6 个数字时,它们就会从列表中删除。问题是数组的每一行都使用相同的列表,直到其中没有数字为止。如何重置每一行的列表?
这是我目前所拥有的:
static void InitMatrix(int[,] mat)
{
List<int> numbers = Enumerable.Range(1, 45).ToList();
Random rnd = new Random();
for (int i = 0; i < mat.GetLength(0); i++)
{
if(mat.GetLength(0)< mat.GetLength(1))
for (int j = 0; j < mat.GetLength(1); j++)
{
int index = rnd.Next(0, numbers.Count );
mat[i, j] = numbers[index];
numbers.RemoveAt(index);
}
}
}
【问题讨论】:
-
如果您想每次都重置列表,请在 for 循环中声明它。类似
List<int> numbers = new List<int>;...numbers = Enumerable.Range(1, 45).ToList(); -
@Eminem 我想你已经明白了。将其发布为答案,我会给你 +1。
-
@TimS。我对这些人来说太慢了.. :)
-
请注意,其中两个答案是不同的 - 即使
if statement为假,一个也会创建一个新列表,另一个则不会。 -
@Eminem 我将我的 List 声明放在 If 语句中,因为您只需要 If 语句的真实结果的列表。
标签: c# arrays enumerable