我努力让自己在坐标平面上的任意一点,我想x和y是两个随机浮点数-2.0之间和2.0如何创建一个随机数在-2.0和2.0之间
鉴于我已经尝试过
x = (random.nextDouble() - 2);
y = (random.nextDouble() - 2);
以上将只在坐标平面的负象限中返回(x,y)。
如何使它平均达到所有四个象限?
我努力让自己在坐标平面上的任意一点,我想x和y是两个随机浮点数-2.0之间和2.0如何创建一个随机数在-2.0和2.0之间
鉴于我已经尝试过
x = (random.nextDouble() - 2);
y = (random.nextDouble() - 2);
以上将只在坐标平面的负象限中返回(x,y)。
如何使它平均达到所有四个象限?
创建一个在范围0-4的数(相同的幅度或您的目标范围内),然后减去2对准范围的开始/结束:
x = random.nextDouble() * 4 - 2;
FYI小点:没有必要在表达式中使用双常量,如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,并且您具有-2
和2
之间的数字。
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)
幽州的称号,你想要一个随机浮动,现在你正在与双打工作。 x和y如何定义?如果他们是花车,那么这是问题的一部分。请发布整个代码。 – Turing85 2014-11-05 21:41:59
@Turing85 double是一个浮点类型,所以使用“float”是合理和清晰的 – Bohemian 2014-11-05 21:43:55
@Bohemian不是,如果x和y被定义为浮点数。 – Turing85 2014-11-05 21:46:43