如何在范围内生成一个安全均匀的随机数?该范围可以是0到100之间。(上限不是2的幂)。
java.security.SecureRandom
似乎提供了范围 0..2^n
。
如何在范围内生成一个安全均匀的随机数?该范围可以是0到100之间。(上限不是2的幂)。
java.security.SecureRandom
似乎提供了范围 0..2^n
。
你可以做
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.nextDouble() * 100)
更有效率,因为nextDouble()需要生成至少53位随机数,而nextInt(100)只需要生成不到7位。
SecureRandom random = new SecureRandom();
int max=50;
int min =1;
System.out.println(random.nextInt(max-min+1)+min);