據我所知,有兩種主要的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