Math 我如何影响可重复的随机序列?

Math 我如何影响可重复的随机序列?,math,random,language-agnostic,Math,Random,Language Agnostic,我正在使用带有固定种子的RNG。根据输入,这是一个任意的整数序列,我想影响输出。大概是这样的: foreach (int i in source_int_sequence) { write_output (RNG.nextDouble()); RNG.feed (i); } 反馈功能应以可重复(相同输入产生相同输出)但难以预测(即随机)的方式影响下一个输出 RNG不被认为是加密安全的,自然受影响的结果也不一定是安全的。但是,请注意,源序列可能看起来很奇怪,即只有零、+1和-1交

我正在使用带有固定种子的RNG。根据输入,这是一个任意的整数序列,我想影响输出。大概是这样的:

foreach (int i in source_int_sequence) {
    write_output (RNG.nextDouble());
    RNG.feed (i);
}
反馈功能应以可重复(相同输入产生相同输出)但难以预测(即随机)的方式影响下一个输出

RNG不被认为是加密安全的,自然受影响的结果也不一定是安全的。但是,请注意,源序列可能看起来很奇怪,即只有零、+1和-1交替、稳步递增的数字,或者任何您可以想到的会抛出一个幼稚实现的东西


我用的是C#,但我相信这个问题与语言无关。

解决这个问题的一种方法是将输入的整数序列转换为看似随机的值序列。一旦你做到了这一点,你可以通过从伪随机生成器生成随机数,然后用你得到的随机数序列对它们进行XORing来影响生成的随机数

将输入序列转换为随机序列的一种可能方法是使用类似于或分组密码的技术。如果您使用的分组密码是安全的(尽管,正如您所提到的,这是过度杀伤力),那么这将返回一些加密安全的东西。另一种选择是使用具有无限窗口大小的来从流中构建散列值

希望这有帮助