繁体   English   中英

如何创建-2.0和2.0之间的随机数

[英]How to create a random number between -2.0 and 2.0

我正在尝试在坐标平面上创建一个随机点,并且我希望x和y是-2.0和2.0之间的两个随机浮点数

鉴于我已经尝试过

x  = (random.nextDouble() - 2);
y  = (random.nextDouble() - 2);

上面将仅在坐标平面的负象限中返回(x,y)。

我如何使它平等地到达所有四个象限?

在0-4范围内创建一个数字(相同的幅度或您的目标范围),然后减去2以对齐范围的开始/结束:

x = random.nextDouble() * 4 - 2;

仅供参考,一点:不必在表达式中使用双精度常量,例如4.0 ,因为当算术运算的操作数之一为double ,java会将其他类型的自动(安全)扩展为double

random.nextDouble()返回一个介于0.0和1.0之间的随机值,因此,如果您减去2,您将获得一个介于-2.0和-1.0之间的随机值。

您还必须缩放该值-将其乘以范围的大小,在您的情况下为4:

x = 4.0 * random.nextDouble() - 2.0;
y = 4.0 * random.nextDouble() - 2.0;

random.nextDouble()仅返回0.0到1.0,您需要先将其乘以4

x  = (random.nextDouble() * 4 - 2);
y  = (random.nextDouble() * 4 - 2);

简单:您只需要缩放它。 减去.5得到一个介于-.5.5 ,然后将其乘以4,则您得到-22之间的值。

x  = ((random.nextDouble() - .5) * 4);
y  = ((random.nextDouble() - .5) * 4);

因此random.nextDouble()返回数字0-.9999,因此必须将其乘以范围-2-2 = 4

然后减去2以获得-2到2

x =(random.nextDouble()* 4 -2)

y =(random.nextDouble()* 4 -2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM