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.security.SecureRandom
seems to provide the range 0..2^n
.
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.
Try below code snap
SecureRandom random = new SecureRandom();
int max=50;
int min =1;
System.out.println(random.nextInt(max-min+1)+min);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With