[英]How to fill a 2 dimensional array's row with random numbers from Enumerable.Range list c#
我試圖用包含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循環之外的數字列表。 這意味着它不會在每一行之后重新啟動。
static void InitMatrix(int[,] mat) {
Random rnd = new Random();
for (int i = 0; i < mat.GetLength(0); i++)
{
if(mat.GetLength(0)< mat.GetLength(1))
{
List<int> numbers = Enumerable.Range(1, 45).ToList();
for (int j = 0; j < mat.GetLength(1); j++)
{
int index = rnd.Next(0, numbers.Count );
mat[i, j] = numbers[index];
numbers.RemoveAt(index);
}
}
}
}
代碼未經測試,但可以正常工作。
將列表聲明移到第一個(行)循環下方。 這樣,只要循環將移至下一行,就可以重新初始化/刷新列表。
static void InitMatrix(int[,] mat)
{
Random rnd = new Random();
for (int i = 0; i < mat.GetLength(0); i++)
{
List<int> numbers = Enumerable.Range(1, 45).ToList();
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);
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.