随机数生成查询
回答
是的,这是可能的。如果你需要生成从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