Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java: Random long value in an interval [duplicate]

Possible Duplicate:
Java: random long number in 0 <= x < n range

I want to generate a random long value in an interval but it seems that the Random class nextLong() doesn't accept arguments like nextInt(). What can I do here?

like image 621
Mintz Avatar asked Dec 05 '12 14:12

Mintz


2 Answers

If you want range based long values then do the below:

 long LOWER_RANGE = 0; //assign lower range value
 long UPPER_RANGE = 1000000; //assign upper range value
 Random random = new Random();


 long randomValue = LOWER_RANGE + 
                           (long)(random.nextDouble()*(UPPER_RANGE - LOWER_RANGE));
like image 104
Yogendra Singh Avatar answered Sep 20 '22 12:09

Yogendra Singh


You could use nextInt to generate higher and lower ints of the long. It's even possible to extend the Random-class with your own nextLong-method (even though composition could be a safer choice for more serious programming).

Take a look at the Javadoc of nextInt(int n). A nextLong method could be implemented using the same algorithm. Getting it right could prove a bit tricky. Prepare to do some math with pen and paper. Using a proven library is wise if you're not just coding for fun.

like image 20
COME FROM Avatar answered Sep 19 '22 12:09

COME FROM