在Java中生成特定范围内的十进制随机数?

在Java中生成特定范围内的十进制随机数?,java,random,decimal,Java,Random,Decimal,如何在java中的两个指定变量之间生成随机整十进制数, e、 g.x=-1和y=1将输出-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中的任意一个 注:应包括1和-1([-1,1])。并在点后给出一个十进制数 Random r = new Random(); double random = (r.nextInt(21)-10) / 10.0; 将给您一个介于[-1,1]之间的随机数,步长为0.1 和通用方法: double

如何在java中的两个指定变量之间生成随机整十进制数, e、 g.x=-1和y=1将输出-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中的任意一个

注:应包括1和-1([-1,1])。并在点后给出一个十进制数

Random r = new Random();
double random = (r.nextInt(21)-10) / 10.0;
将给您一个介于[-1,1]之间的随机数,步长为0.1

和通用方法:

double myRandom(double min, double max) {
    Random r = new Random();
    return (r.nextInt((int)((max-min)*10+1))+min*10) / 10.0;
}

将返回步长为0.1且介于[min,max]之间的双精度值。

Random rand = new Random();
float result = (rand.nextInt(21) - 10) / 10.0;

你检查了吗?提示:这与生成范围
-10
..
10
中的随机整数并将其除以
10是一样的。
要将此答案用作一般模型,请查看
-1
是起始数字,
2.0
是总范围。OP似乎希望0.1和0.2是可能的结果,但不是(假设)0.1234。(1)你不需要将
int/double
的施法结果转换为double,因为它是double,(2)这样你就永远不会得到
1.0
,因为
nextInt(20)
可以返回最大值19。你原来的方法有效,你只需要在
Math.round(randouble*10)/10d
Yes,
nextInt(21)之后进行取整
将生成范围
0,20
(包括这两个)中的值,因此
-10
后范围将更改为
-10,10
,除以
10.0
后范围将更改为
-1.0,1.0