【问题标题】:Psuedo-Random-Number-Generator from a computable normal number来自可计算正常数的伪随机数生成器
【发布时间】:2009-03-06 01:37:11
【问题描述】:

用这种方式构建 PRNG 不是很容易吗?为什么没有完成?

也就是说,据我所知,我们可以简单地拥有一个带有种子 n 的 PRNG。当你要求一个随机位时,它取可计算正常数的二进制扩展的第 n 位,并递增 n。

我的第一个想法是,也许我们没有找到可计算的正常数,但我们have。剩下的想法是,有一个很好的理由不这样做——要么是我不熟悉的 PRNG 的某些属性,而这种方法不具备,要么在某种程度上不切实际,要么被其他方法超越。

【问题讨论】:

标签: math random prng


【解决方案1】:

这将使预测输出变得非常简单。

例如,您生成整数 0x54a30b7f。如果您有 4GiB 的 pi(或随机噪声或实际的正常数),则该特定整数可能只会出现一次(或少数),我可以以相当高的概率预测所有未来的数字。在密码学强 PRNG 的情况下,这是一个严重的问题。如果你使用一些函数而不是简单的顺序扫描,我只需要遵循这个函数,如果很难遵循它本身就会变成一个 PRNG。

如果您不关心生成器的加密强度,那么可以使用更紧凑的方法来生成随机数。例如,Mersenne Twister 的周期要大得多,不需要 4GiB 查找表。

【讨论】:

  • 首先,pi(以及大多数其他此类常量,例如 sqrt(2) 和 e)尚未被证明是正常的。其次,它是可计算的,更重要的是,无需计算 n-1 即可计算 pi 的第 n 位,无需查找表。将在新评论中说更多。
  • 抱歉,帖子大小限制。其次,具有正常数的东西是任何数在展开中都会出现无数次。此外,它与任何其他数字一样可能。因此,鉴于正常数字的全部或任意大范围,无法猜测。
  • ... 但是你的种子必须大于 32 位(否则你只能使用前 4GiB)并且种子的生成必须足够安全,我不能简单地攻击它。
猜你喜欢
  • 2011-09-22
  • 1970-01-01
  • 2012-02-09
  • 2014-05-18
  • 1970-01-01
  • 2016-03-08
  • 2014-04-06
  • 2015-08-07
  • 1970-01-01
相关资源
最近更新 更多