Generating decimal random numbers in Java in a specific range?
17,949
Solution 1
Random r = new Random();
double random = (r.nextInt(21)10) / 10.0;
Will give you a random number between [1, 1] with stepsize 0.1.
And the universal method:
double myRandom(double min, double max) {
Random r = new Random();
return (r.nextInt((int)((maxmin)*10+1))+min*10) / 10.0;
}
will return doubles with step size 0.1 between [min, max].
Solution 2
If you just want between 1 and 1, inclusive, in .1 increments, then:
Random rand = new Random();
float result = (rand.nextInt(21)  10) / 10.0;
Related videos on Youtube
Author by
Omid7
Updated on September 15, 2022Comments

Omid7 4 months
How can I generate a random whole decimal number between two specified variables in java, e.g. x = 1 and y = 1 would output any of 1.0, 0.9, 0.8, 0.7,….., 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.9, 1.0?
Note: it should include 1 and 1 ([1,1]) . And give one decimal number after point.

Alexis C. about 8 yearsDid you check stackoverflow.com/questions/363681/… ?

Pshemo about 8 yearsTip: it is the same as generating random integers in range
10
...10
and dividing them by10.


snickers10m about 8 yearsTo use this answer as a general model, see that the
1
is the starting number and the2.0
is the total range. 
Alan Stokes about 8 yearsThe OP seems to want 0.1 and 0.2 to be possible results but not (say) 0.1234.

Pshemo about 8 years(1) you don't need casting result of
int/double
to double because it is double, (2) this way you will never get1.0
sincenextInt(20)
can return max 19. 
yate about 8 yearsYour original way worked, you just needed to round after
Math.round(randomDouble * 10) / 10d

Pshemo about 8 yearsYes,
nextInt(21)
will generate values in range0, 20
(both inclusive) so after10
range will change to10,10
and after dividing by10.0
to1.0, 1.0
.