我正在寻找一种使用java生成随机数的方法。我希望它快速且高度安全。不幸的是,java中的SecureRandom类及其方法nextBytes()生成高度安全的随机数,但这种方法花了我很多时间。我正在寻找是否存在与上述具有相同目标的方法的任何实现,其具有复杂度O(1)或最坏情况O(n)。
答案 0 :(得分:4)
任何RNG或PRNG将为boost::optional<>
或更差 1 以生成N个随机位/字节/无论如何。 (复制N个字节/位是O(N)
操作...)
我认为您真正要问的是,是否有任何RNG或PRNG快速生成数字和/或快速播种。看到这个Q&amp;答:
1 - 实际上,典型的加密质量PRNG是O(N)
。例如,Oracle的O(N)
默认使用SHA1,而SHA1是SecureRandom
算法,用于散列O(M)
字节消息。这会在生成M
字节时导致O(N)
PRNG。当然,SHA-1的比例常数相当大......但这与算法的大O复杂度类无关。
答案 1 :(得分:0)
您可以使用Apache commons-math3生成随机数。 它有很多有用的方法。 请参阅“RandomGenerator”接口及其实现类。