每次从for循环中调用RandomNumber方法时,我都会尝试生成不同的随机数。现在,它每次都返回相同的数字。
这是我的RandomNumber方法:
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
这是我使用它的上下文:(它有点乱,只是因为我一直在试图让它工作......)
for (int i = 0; i < charsRaw.Length; i++)
{
int max = charsRaw.Length - 1;
int rand = 0;
rand = RandomNumber(0, max);
charsNew[i] = charsRaw[rand];
text2 += charsNew[i];
}
每次使用for循环调用时,我似乎都无法返回不同的值。
虽然,当我在text2 + = charsNew [i]之后粘贴MessageBox.Show(rand.ToString())时,它每次都给我一个不同的值,并按照我的预期方式工作。奇怪。
谢谢! 埃里克
答案 0 :(得分:17)
实例化一次随机。在同一个实例上多次调用.Next()。
MSDN:
随机数生成开始 来自种子价值。如果是同一种子 反复使用,同系列的 生成数字
如果您希望重复实例化Random,请每次使用不同的种子。
答案 1 :(得分:1)
没有什么可以说真正的随机序列每次都不能是相同的数字! :-)它的合法性很小,所以你永远无法确定。 寻找封面的鸭子