如何获得随机种子给出前2个伪随机数

时间:2017-08-04 14:50:27

标签: c# random random-seed

我正在寻找一个函数,该函数将根据Random生成的前两个int数返回C#Random.Next()类的种子。我想避免蛮力(这是我试过的)。基本上,我正在寻找这个代码的反向函数,它不是基于暴力

using System;

public class Program
{
    public static void Main()
    {
        int seed = 0;
        Random rnd = new Random(seed);
        Console.WriteLine($"Seed: {seed}");
        Console.WriteLine($"Rnd1: {rnd.Next()}");
        Console.WriteLine($"Rnd2: {rnd.Next()}");
    }
}

打印出来

Seed: 0
Rnd1: 1559595546
Rnd2: 1755192844

有一种快速获取SeedRnd1 Rnd2的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以获得种子,但没有rnd1rnd2将会执行以下操作

  var tickCount = Environment.TickCount;
        var random = new Random();
        var seededRandom = new Random(tickCount);


        for (int i = 0; i < 100000000; i++)
        {
            // Does not enter the if case at any point.
            if (random.Next() != seededRandom.Next())
            {
                Console.WriteLine("No match");
            }
        }

来源:http://referencesource.microsoft.com/#mscorlib/system/random.cs,53