给定两个数字,如何为生成器找到种子以重新创建这些数字

时间:2019-04-10 11:05:38

标签: c# random compression

我正在考虑“超级压缩器”的概念,它可以压缩随机数据(或者我希望如此!)。

简而言之,它应该像这样工作:从二进制序列中将数字取第一,找到序列生成器的种子,该种子将产生这两个数字。移至下两个数字。第一次通过后,序列应比原始序列短(近)两倍。接下来,对种子序列重复此过程。依此类推,直到我们获得一粒种子。

假设减压将以相反的顺序进行-取一个种子,产生2个数字。迭代两个数字,每个数字作为种子,产生更多数字。

忽略许多重要的细节,问题的核心归结为对代码(dotnetfiddle)中的任何GetSeed值实现int函数

private static int GetSeed(int n1, int n2)
{
    // how to implement this for any n1 and n2
    return 1234567890;
}

public static void Main()
{
    int seed = GetSeed (1175335310, 906672726);     
    var r = new Random(seed);
    int n1 = r.Next();
    int n2 = r.Next();  
    Console.WriteLine("Sequence: {" + n1 + ", " + n2 + "}. Seed " + seed);      
    // Sequence: {1175335310, 906672726}. Seed 1234567890
}

是否可以为两个任意随机整数实现GetSeed

0 个答案:

没有答案