我正在寻找一个函数,该函数将根据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
有一种快速获取Seed
和Rnd1
Rnd2
的方法吗?
答案 0 :(得分:0)
您可以获得种子,但没有rnd1
和rnd2
将会执行以下操作
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