我正在考虑“超级压缩器”的概念,它可以压缩随机数据(或者我希望如此!)。
简而言之,它应该像这样工作:从二进制序列中将数字取第一,找到序列生成器的种子,该种子将产生这两个数字。移至下两个数字。第一次通过后,序列应比原始序列短(近)两倍。接下来,对种子序列重复此过程。依此类推,直到我们获得一粒种子。假设减压将以相反的顺序进行-取一个种子,产生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
?