高熵随机数据创建功能?

时间:2015-01-20 23:15:01

标签: math random bits entropy

是否有产生"无限"一些高熵数据?此外,是否存在能够一次又一次地(顺序地)产生相同随机数据的函数?

我知道它们存在,但它们是否有特定的名称?

用例示例:

  • 使用该函数生成100位随机数据​​。 (太棒了!)但同时保持高熵值。
  • 使用相同的函数生成10000位随机数据​​。 (生成的前100位与之前生成的100位随机数据​​相同)。而且仍然保持较高的熵值

此外,我将如何自己构建这些功能?

1 个答案:

答案 0 :(得分:1)

您很可能正在寻找Pseudo-Random Number Generators

  • 它们由种子初始化,从而获得有限量的熵。
  • 好的生成器有一个不错的熵出现,假设你只从它的输出判断它(因此你忽略种子和/或算法来生成数字,否则熵显然为0)。

      

    大多数PRNG算法产生的序列通过几种测试中的任何一种均匀分布。这是一个悬而未决的问题,也是密码学理论和实践的核心,是否有任何方法可以在不知道所使用的算法和状态的情况下将高质量PRNG的输出与真正的随机序列区分开来。它被初始化了。

  • 所有PRNG都有一段时间,之后生成的序列将重新启动。

      

    PRNG的周期因此被定义:在所有开始状态下,序列的无重复前缀的长度的最大值。周期由状态数限制,通常以位为单位。但是,由于周期的长度可能会随着每个“状态”位的增加而翻倍,因此很容易构建PRNG,其周期足以满足许多实际应用。

因此,要有两个不同长度的序列,其中一个是另一个的前缀,你只需要同时运行一个具有相同种子的PRNG。

自己构建它们会非常棘手,但一个相当好而简单的就是Mersenne Twister,它可以追溯到1998年并在a paper by Matsumoto and Nishimura [1]中定义。

一个简单的例子是linear congruential generator

[1] Matsumoto,M。; Nishimura,T。(1998)。 “Mersenne twister:623维等分的均匀伪随机数发生器”。 ACM建模和计算机模拟交易8(1):3-30。 DOI:10.1145/272991.272995