我正在尋找一種高效的方式來使用java生成隨機數。我希望它速度快,安全性高。不幸的是,Java中的SecureRandom類及其方法nextBytes()會生成高度安全的隨機數,但此方法需要相當長的時間。我正在研究是否有任何實現與上述複雜度爲O(1)或最差情況爲O(n)的方法相同的目標。是否有任何方法生成隨機數的複雜度O(1)
-1
A
回答
4
任何RNG或PRNG將是O(N)
或更差生成N個隨機位/字節/任何。 (這是一個O(N)
操作拷貝N個字節/位...)
我認爲你真的要問的是,如果有任何RNGs或PRNG產生快速的數字和/或種子自己快。見這種問答&答:
1 - 事實上,一個典型的加密質量PRNG爲O(N)
。例如,默認情況下,Oracle的SecureRandom
使用SHA1,當對M
字節消息進行散列時,SHA1是O(M)
算法。生成N
字節時,會導致產生O(N)
PRNG。當然,SHA-1的比例常數相當大,但這與算法的大O複雜性等級無關。
0
您可以使用Apache commons-math3生成隨機數。 它有很多有用的方法。 請參閱接口「RandomGenerator」及其實現類。
相關問題
- 1. 複雜的隨機點生成
- 2. 爲什麼python的list.append()方法O(1)的時間複雜度?
- 3. C++生成隨機數-1
- 4. 生成隨機數1-100
- 5. 爲什麼這個算法的空間複雜度是O(1)
- 6. 生成沒有重複的隨機數
- 7. 是否有任何時間複雜度爲O(lg * n)(迭代對數函數)的算法?
- 8. 生成隨機數...更快的方法?
- 9. 生成隨機數的正確方法
- 10. 生成隨機數對,沒有重複
- 11. 隨機數生成沒有重複
- 12. 查找數組中缺失的數字,時間複雜度爲O(N),空間複雜度爲O(1)
- 13. 複雜度O(log(n))是否等於O(sqrt(n))?
- 14. 生成具有隨機行長度的隨機二維數組
- 15. 隨機生成「-1」或「1」 - 最短方法
- 16. 類,方法和隨機數生成
- 17. 生成隨機值1/X
- 18. 如何找到與複雜度爲O n個素數(1)
- 19. SQL - 外鍵O(1)的時間複雜度是多少?
- 20. 如何使這個空間複雜度爲O(1)而不是O(n)?
- 21. 是否有任何有效的隨機BYTES生成器(不使用分區)?
- 22. 是否有任何有效的方法可以從現在起生成從範圍到10天的隨機date_time?
- 23. 算法的大O複雜度
- 24. 無法生成隨機數
- 25. 是否有可用的排序算法,其時間複雜度爲O(N)?
- 26. 設計一個帶插入,刪除的數據結構,在O(1)時間複雜度中獲得隨機數,
- 27. 生成複雜的SQL與任何ORM
- 28. O(nⁿ)和O的時間複雜度
- 29. 隨機數生成與它爲1
- 30. 有關生成隨機數
對於背景,你能描述一下這些隨機數的應用是什麼嗎? –
看這裏:http://stackoverflow.com/questions/2523492/choosing-random-numbers-efficiently –
這是什麼意思的O(n)在這方面?數字的位數是多少? –