2016-06-29 41 views
-1

我正在尋找一種高效的方式來使用java生成隨機數。我希望它速度快,安全性高。不幸的是,Java中的SecureRandom類及其方法nextBytes()會生成高度安全的隨機數,但此方法需要相當長的時間。我正在研究是否有任何實現與上述複雜度爲O(1)或最差情況爲O(n)的方法相同的目標。是否有任何方法生成隨機數的複雜度O(1)

+2

對於背景,你能描述一下這些隨機數的應用是什麼嗎? –

+0

看這裏:http://stackoverflow.com/questions/2523492/choosing-random-numbers-efficiently –

+1

這是什麼意思的O(n)在這方面?數字的位數是多少? –

回答

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」及其實現類。

相關問題