隨機數生成查詢
回答
是的,這是可能的。如果你需要生成從0 10000件不同的隨機數到9999,您可以生成連續的10000號列表,然後調用Collections.shuffle
就可以了。
如果您需要高質量的隨機數「開箱即用」,例如用於產生隨機加密密鑰或情況下,要克服一些java.util.Random中的弱點,那麼你就可以大致使用java.security.SecureRandom
作爲一個下拉更換爲java.util.Random
:
Random diceRoller = new SecureRandom();
// proceed as before...
SecureRandom實現提供隨機性更高的質量,並與幫助,從操作系統,採用熵的來源種子本身(或「真正的不可預測性」)在本地機器上可用。但是,它比其他典型發電機慢大約20-30倍。 (請注意,「慢」仍然意味着你可以產生大約在第二個一百萬隨機多頭在2GHz的處理器!)
參考:http://www.javamex.com/tutorials/random_numbers/generators_overview.shtml
感謝。有沒有什麼辦法可以在上面的代碼中生成唯一的數字?在此先感謝 –
隨機性從不保證唯一性。如果你想生成唯一的號碼試圖保持獨特的號碼池,並從池中挑選號碼 – Anshu
利用隨機數,在範圍內的所有數字都同樣可能。這意味着如果你得到一個數字,下一個值就像它第一次出現一樣。
順便說一句:在你的例子中使用round不是一個好主意,因爲數字1到9999的可能性是相同的,但數字0和10000的可能性只有一半,只有半數舍入或半數舍入。
一種更有效的方式是使用
Random rand = new Random();
// as needed
int num = rand.nextInt(10000); // will be [0, 10000)
如果你需要生成唯一的號碼,你可以使用Collections.shuffle
List<Integer> nums = new ArrayList<Integer>();
for(int i = 0; i < 10000; i++) nums.add(i);
Collections.shuffle(nums);
這會給你最多10000識別號隨機訂購。
感謝。有沒有什麼辦法可以在上面的代碼中生成唯一的數字?在此先感謝 –
我加入了一個例子唯一的編號。 –
謝謝Peter ... –
- 1. 重新生成「隨機」MySQL查詢
- 2. 隨機生成的問題:我要生成與JPQL隨機問題查詢
- 3. 隨機數生成
- 4. 生成隨機數
- 5. 生成隨機數
- 6. 生成隨機數
- 7. 生成隨機數
- 8. 隨機數生成
- 9. 隨機數生成機制
- 10. 生成隨機數:計算隨機生成的x次數
- 11. 隨機數生成器幫助不生成隨機數 - C
- 12. 隨機()不生成隨機數
- 13. 從隨機長生成隨機數
- 14. 在隨機生成50個隨機數中使用隨機數#
- 15. 關於AS3中隨機數生成的查詢
- 16. 生成隨機數在每一行中的Oracle查詢
- 17. pushState和http_build_query在查詢字符串中生成隨機數
- 18. 僞隨機數生成
- 19. 無法生成隨機數
- 20. 生成隨機小數
- 21. Haskell Grokking隨機數生成
- 22. SQL生成隨機數
- 23. C - 生成隨機數
- 24. 大隨機數生成
- 25. 生成隨機數2^30
- 26. 隨機數生成問題
- 27. Lua隨機數生成
- 28. 用jinja2生成隨機數
- 29. 生成多個隨機數
- 30. 庫隨機數生成
ref http://stackoverflow.com/questions/4655931/12-digit-unique-random-number-generation-in-java – Salil
你似乎不明白「隨機」的含義。 –
當然,它可能會產生相同的數字。隨機性和唯一性是兩個完全不同的東西。 – Jesper