据我所知,有两种主要的Java类能够执行伪随机活动:Random
类和SecureRandom
类。两者都产生伪随机数。但是,SecureRandom
类会生成密码安全的数字。当您可以使用SecureRandom类时,为什么要使用Java的随机类?
为什么即使使用Random
类也可以使用SecureRandom
类,这会生成更多不可预测的数字?许多程序员(尤其是视频游戏程序员)只使用Random
类,但是这两个类具有几乎相同的核心方法(都可以生成伪随机整数)。这两个类也可以播种长期价值。
我唯一的解释是Random
类的操作速度比SecureRandom
类要快。这是真的?如果不是,那么为什么许多Java程序员更喜欢Random
类而不是SecureRandom
类?
[若要开始](HTTP: //docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html):*“[...]根据实现,generateSeed和nextBytes方法**可能会阻塞**作为熵正在收集[...]“*。此外,“随机”提供了一个确定性的随机序列,在大多数实现中推测其速度更快。 – aioobe