如何在范围内生成安全统一随机数?范围可以在0到100之间。(上限不是2的幂)。
java.security.SecureRandom
似乎提供范围0..2^n
。
答案 0 :(得分:14)
你可以做到
Random rand = new SecureRandom()
// 0 to 100 inclusive.
int number = rand.nextInt(101);
或
// 0 inclusive to 100 exclusive.
int number = rand.nextInt(100);
注意:这比说(int) (rand.nexDouble() * 100)
更有效,因为nextDouble()需要创建至少53位的随机性,而nextInt(100)创建少于7位。
答案 1 :(得分:2)
尝试以下代码快照
SecureRandom random = new SecureRandom();
int max=50;
int min =1;
System.out.println(random.nextInt(max-min+1)+min);