随机数方法每次调用时返回相同的数字

时间:2009-06-17 03:14:53

标签: c# random

每次从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())时,它每次都给我一个不同的值,并按照我的预期方式工作。奇怪。

谢谢! 埃里克

2 个答案:

答案 0 :(得分:17)

实例化一次随机。在同一个实例上多次调用.Next()。

MSDN

  

随机数生成开始   来自种子价值。如果是同一种子   反复使用,同系列的   生成数字

如果您希望重复实例化Random,请每次使用不同的种子。

答案 1 :(得分:1)

没有什么可以说真正的随机序列每次都不能是相同的数字! :-)它的合法性很小,所以你永远无法确定。 寻找封面的鸭子