在Java中的一个范围内统一生成安全随机数

时间:2015-02-26 12:38:05

标签: java security random

如何在范围内生成安全统一随机数?范围可以在0到100之间。(上限不是2的幂)。

java.security.SecureRandom似乎提供范围0..2^n

2 个答案:

答案 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);