Random.Next() 总是 returns for 循环中的相同值
Random.Next() always returns same values in for loop
我目前正在编写一个程序,其中我希望随机化数组的所有值,尽管 Random.Next() 的输出是随机的,但它在 for 循环内不是随机的。
我的代码:
for (int i = 0; i < simsToRun; i++)
{
Simulations[i, 0] = Simulations[i, 0] + (rand.Next(0, 3) / 100) - 0.01f;
Simulations[i, 1] = Simulations[i, 1] + (rand.Next(0, 3) / 100) - 0.01f;
Simulations[i, 2] = Simulations[i, 2] + (rand.Next(0, 3) / 10) - 0.1f;
}
随机化后的值示例:
模拟[0, 0] = 0.9
模拟[0, 1] = 1.1
模拟[0, 2] = 45
这是预期的,但是,这种确切的模式在整个循环中不断重复:
模拟[1, 0] = 0.9
模拟[1, 1] = 1.1
模拟[1, 2] = 45
等等...
有什么办法可以解决这个问题吗?
如果您需要任何额外信息,请告诉我
rand.Next(0, 3) / 100
始终为 0。您得到一个整数,即 0,1 或 2。然后除以 100,四舍五入为 0。
你想要
rand.NextDouble()
并调整结果范围以符合您的需要。 (它 returns 一个从 0.0 到 < 1.0 的数字)
我目前正在编写一个程序,其中我希望随机化数组的所有值,尽管 Random.Next() 的输出是随机的,但它在 for 循环内不是随机的。
我的代码:
for (int i = 0; i < simsToRun; i++)
{
Simulations[i, 0] = Simulations[i, 0] + (rand.Next(0, 3) / 100) - 0.01f;
Simulations[i, 1] = Simulations[i, 1] + (rand.Next(0, 3) / 100) - 0.01f;
Simulations[i, 2] = Simulations[i, 2] + (rand.Next(0, 3) / 10) - 0.1f;
}
随机化后的值示例:
模拟[0, 0] = 0.9
模拟[0, 1] = 1.1
模拟[0, 2] = 45
这是预期的,但是,这种确切的模式在整个循环中不断重复:
模拟[1, 0] = 0.9
模拟[1, 1] = 1.1
模拟[1, 2] = 45
等等... 有什么办法可以解决这个问题吗?
如果您需要任何额外信息,请告诉我
rand.Next(0, 3) / 100
始终为 0。您得到一个整数,即 0,1 或 2。然后除以 100,四舍五入为 0。
你想要
rand.NextDouble()
并调整结果范围以符合您的需要。 (它 returns 一个从 0.0 到 < 1.0 的数字)