usu*_*sul 6 random math number-theory
你会如何生成一个非常大的随机数?我正在思考2 ^ 10 ^ 9(十亿位)的顺序.任何编程语言 - 我认为该解决方案将转换为其他语言.
我想在[1,N]上统一分布.
我最初的想法:
- 你可以随机生成每个数字并连接.问题:即使非常好的伪随机生成器也可能开发出数百万位数的模式,对吗?
您可以通过将随机数提高到随机指数来帮助创建大的随机数.问题:你必须使数学工作,以便得到的数字仍然是随机的,你应该能够在合理的时间内(比如一小时)计算它.
如果它有帮助,你可以尝试在可能更小的范围(例如使用实数)和变换上生成可能不均匀的分布.问题:这可能同样困难.
有任何想法吗?
生成log2(N)随机位以获得一个数字M,其中M可能高达 的两倍N。重复直到M位于范围内[1;N]。
现在要生成随机位,您可以使用真正的随机性源,但这很昂贵。
或者您可以使用一些加密安全的随机数生成器,例如带有随机密钥的 AES,用于加密后续位块的计数器。密码安全意味着不可能有明显的模式。