返回的矩阵总是包含1

时间:2014-09-19 14:35:38

标签: c# .net matrix

我正在编写一个程序来创建一个将填充1和0的矩阵。

var matrix = new int[3,3];

for (int i = 0; i < matrix.GetLength(0); i++)
{
    for (int j = 0; j < matrix.GetLength(1); j++)
    {
        var random = new Random();
        int rand = random.Next(0,2);
        matrix[i, j] = rand;
    }
}
for (int i = 0; i < matrix.GetLength(0); i++)
{
    for (int j = 0; j < matrix.GetLength(1); j++)
    {
        Console.Write(matrix[i, j] + " ");
    }
    Console.WriteLine();
}

程序总是返回一个填充1的矩阵。我希望它是包含1和0的随机i-e。可能是什么问题?

1 个答案:

答案 0 :(得分:3)

只需移动此行代码

即可
var random = new Random();
在这行代码之前

for (int i = 0; i < matrix.GetLength(0); i++)

这将解决您的问题。请看一下here

  

为什么会这样?

正如here所述,

  

每次执行新的Random()时,都会使用时钟进行初始化。这个   意味着在紧密循环中,您可以多次获得相同的值。您   应该保留一个Random实例并继续使用Next   实例