【问题标题】:The same rows in LinkedList<LinkedList> [duplicate]LinkedList<LinkedList> 中的相同行 [重复]
【发布时间】:2012-04-14 01:37:59
【问题描述】:

可能重复:
Random number generator not working the way I had planned (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

但应该显示不同

【问题讨论】:

  • 关注您的问题。具体来说,您正在经历什么,您预计会发生什么?
  • raws 是我忽略的 C#5 中的一些新类型吗?或者你真的是指rows(这对我来说仍然没有多大意义)?
  • 我最好的猜测是他的意思是 ROWS,这就是他用来引用列表成员的地方。
  • @Mathieu - 也许,但链表并没有真正的 ,它们有元素。
  • 因此,如果您取反相对中子核心相结构的法线并将其与左侧附加β发射场的分量成对交叉,您将获得原始场通量能量的链接耦合.记录空间系数列表中的条目,并在菲涅耳-布里格斯图中显示由最大割产生的逐行排他条目。

标签: c# .net random linked-list


【解决方案1】:

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

var ranodGenerator = new Random();

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

这里是常见问题解答:Random number generator only generating one random number

【讨论】:

  • 谢谢,它有帮助,但我仍然很好奇为什么在调试模式下的行不同。
  • @jjjojjjooo 你是在断点处停下来吗?
  • FAQ 的第一行 - “每次你执行 new Random() 都会使用时钟进行初始化。这意味着在一个紧密的循环中你会多次获得相同的值。” - 所以时间更短运行代码需要更多机会获得相同的值。尤其是单步执行代码,它会让人大跌眼镜。
【解决方案2】:

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

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

编程中的随机数实际上并不是随机的。它们是由一个数学公式反复应用于上一次迭代的结果而生成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2016-12-23
    • 1970-01-01
    • 2011-08-17
    • 2016-04-22
    • 2014-09-17
    • 1970-01-01
    相关资源
    最近更新 更多