-2

可能重复:
随机数生成器未按我计划的方式工作(C#)

我有LinkedList的LinkedList,当我在填充后尝试显示时,原始数据是相同的,但最奇怪的是在调试模式下它会显示不同的行。顺便说一句,我有 VS11 测试版。

    private LinkedList<LinkedList<int>> grid = new LinkedList<LinkedList<int>>();


    public void CreateMatrix(int rows, int coloumns, int maxSize)
    {
        for(int i = 0; i < rows;i++)
        {
            grid.AddFirst(generateList(coloumns, maxSize));
        }
    }



    private LinkedList<int> generateList(int size, int maxSize)
    {
        var ranodGenerator = new Random();
        var list = new LinkedList<int>();
        for (int j = 0; j < size; j++)
        {
            list.AddFirst(ranodGenerator.Next(maxSize));
        }
        return list;
    }


    public void DisplayMatrix()
    {
        foreach (var list in grid)
        {
            foreach (var i in list)
            {
                Console.Write(i+ " ");
            }
            Console.WriteLine();
        }
    }

所以之后

MatrixManager matrixManager = new MatrixManager();
            matrixManager.CreateMatrix(4,4,200);
            matrixManager.DisplayMatrix();

它将显示 4 个相同的行

134 3 45 26
134 3 45 26
134 3 45 26
134 3 45 26

但应该显示不同

4

2 回答 2

1

移动“随机ranodGenerator = new Random();” 到文件的顶部,并为整个矩阵使用相同的。

您正在为每一行创建一个新的Random对象。创建一个新的Random对象会从头开始生成随机数。

编程中的随机数实际上并不是随机的。它们是由一个数学公式生成的,该公式一遍又一遍地应用于前一次迭代的结果。

于 2012-04-14T01:55:23.213 回答
1

这应该是“如何使用随机”的副本

var ranodGenerator = new Random();

此行重新开始创建随机数。创建一个随机数生成器,生活会好很多。

这是常见问题解答:随机数生成器仅生成一个随机数

于 2012-04-14T01:47:38.643 回答