两个不同的随机数发生器给出相同的答案?

时间:2015-09-02 20:25:20

标签: c# random

    static void Main(string[] args)
    {

        //random number gen
        Console.WriteLine("Array Random Number:");
        randomGenA();
        Console.WriteLine("------------------");

        //LIST: random movie picker...
        Console.WriteLine("List Random Number:");
        randomGenB();
        Console.WriteLine("------------------");

        Console.ReadLine();
    }

    static void randomGenA()
    {
        Random randomA = new Random();
        int randomNumA = randomA.Next(51);

        Console.WriteLine(randomNumA);

    }
    static void randomGenB()
    {
        Random randomB = new Random();
        int randomNumB = randomB.Next(0,51);

        Console.WriteLine(randomNum);
    }
 }

我希望他们两个都产生两个不同的随机数,但我不断从两个中获得相同的随机数。为什么这样做?

2 个答案:

答案 0 :(得分:3)

随机声明一个类级别并在您的方法中使用它:

private static Random _random = new Random();

您的方法如下:

static void randomGenA()
{
    int randomNumA = _random.Next(51);

    Console.WriteLine(randomNumA);

}
static void randomGenB()
{
    int randomNumB = _random.Next(0,51);

    Console.WriteLine(randomNum);
}

请仔细阅读以进一步阅读:http://www.dotnetperls.com/random

答案 1 :(得分:0)

根据文件:

https://msdn.microsoft.com/en-us/library/system.random%28v=vs.110%29.aspx

具有相同种子的两个Random将提供相同的数字序列。只是不要使用相同的种子。如果您没有指定种子,则使用系统时间。在两个实例之间等待一段时间,它将使用两个不同的系统时间。