可能的重复项:
随机数生成器未按我计划的方式工作 (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
但应显示不同
应该是"如何使用随机"的副本
var ranodGenerator = new Random();
此行重新开始创建随机数。创建一个随机数生成器,生活会好得多。
以下是常见问题解答:随机数生成器仅生成一个随机数
将"Random ranodGenerator = new Random();"移动到文件的顶部,并对整个矩阵使用相同的矩阵。
您正在为每一行创建一个新的随机对象。创建一个新的随机对象从头开始随机数生成。
编程中的随机数实际上并不是随机的。它们由数学公式生成,该公式一遍又一遍地应用于上一次迭代的结果。