我正在寻找一个函数,将返回C#Random
类的基础上产生的前两个int数Random.Next()
。我想避免暴力(这是我试过的)。从本质上讲,我期待为这个代码反向功能,不基于蛮力如何获得随机种子给予前2个伪随机数
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
?
那么你尝试?我预计已经采取了一些步骤,至少提供了有关.NET中使用的PRNG的信息(?)。这样做,你可能会发现一个看起来容易被利用的公式,非常容易(太适合给出你的常数2),这让我想,这是来自某种编码测试或竞争? – sascha
你可以找到Random [here]的源代码(https://referencesource.microsoft.com/#mscorlib/system/random.cs,4c2fc83207c654d1) – spectacularbob
[这篇文章是否有用?](https:// stackoverflow。 COM /问题/ 17420424 /确定最种子的-C-尖锐随机实例)。似乎表明这是不可能的,或者至少蛮力其实是相当快的。 – Equalsk