我正在尋找一個函數,將返回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