【发布时间】:2011-07-23 19:06:29
【问题描述】:
如何生成一个非常大的随机数?我正在考虑 2^10^9(十亿位)的数量级。任何编程语言——我认为解决方案会翻译成其他语言。
我想要 [1,N] 上的均匀分布。
我最初的想法:
--您可以随机生成每个数字并连接。问题:即使是非常好的伪随机生成器也可能产生数百万位数的模式,对吧?
您也许可以通过将随机数提高到随机指数来帮助创建大随机数。问题:您必须进行数学运算,以使结果数字仍然是随机的,并且您应该能够在合理的时间内(例如,一个小时)计算它。
如果有帮助,您可以尝试在可能更小的范围内生成可能不均匀的分布(例如,使用实数)并进行变换。问题:这可能同样困难。
有什么想法吗?
【问题讨论】:
-
你打算把它存储在哪种类型中?
-
你需要这个号码做什么?
-
猜猜它必须是一个字符串,或者可能是写入磁盘的纯二进制数据......欢迎提出建议!
-
主要是为了尝试/为了好玩。我在一个可能有用的数论课上。当然,我没有与可证明的数字随机性有关的重要数据。
-
小心。 “可证明随机”是一个非常棘手的概念。任何典型的 RNG 都不会这样做。
标签: math random number-theory