Generate secure random number uniformly over a range in Java

前端 未结 2 1830
庸人自扰
庸人自扰 2020-12-11 05:50

How do I generate a secure uniform random number within a range? The range could be between 0 to 100. (The upper bound is not a power of 2).

java.se

相关标签:
2条回答
  • 2020-12-11 06:08

    You can do

    Random rand = new SecureRandom()
    // 0 to 100 inclusive.
    int number = rand.nextInt(101);
    

    or

    // 0 inclusive to 100 exclusive.
    int number = rand.nextInt(100);
    

    Note: this is more efficient than say (int) (rand.nexDouble() * 100) as nextDouble() needs to create at least 53-bits of randomness whereas nextInt(100) creates less than 7 bits.

    0 讨论(0)
  • 2020-12-11 06:31

    Try below code snap

        SecureRandom random = new SecureRandom();
    
        int max=50;
        int min =1;
    
        System.out.println(random.nextInt(max-min+1)+min);
    
    0 讨论(0)
提交回复
热议问题