2014-11-05 104 views
0

我努力让自己在坐标平面上的任意一点,我想x和y是两个随机浮点数-2.0之间和2.0如何创建一个随机数在-2.0和2.0之间

鉴于我已经尝试过

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

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

如何使它平均达到所有四个象限?

+0

幽州的称号,你想要一个随机浮动,现在你正在与双打工作。 x和y如何定义?如果他们是花车,那么这是问题的一部分。请发布整个代码。 – Turing85 2014-11-05 21:41:59

+0

@Turing85 double是一个浮点类型,所以使用“float”是合理和清晰的 – Bohemian 2014-11-05 21:43:55

+0

@Bohemian不是,如果x和y被定义为浮点数。 – Turing85 2014-11-05 21:46:43

回答

3

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

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

FYI小点:没有必要在表达式中使用双常量,如4.0,因为当算术运算的操作数中的一个是double时,java将执行其他类型的自动(安全)扩展到double

1

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; 
0

random.nextDouble()只返回0.0到1.0,你需要乘以通过4第一

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

简单:你只需要缩放它。减去.5以得到-.5.5范围内的数字,然后将其乘以4,并且您具有-22之间的数字。

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

所以random.nextDouble()你的范围返回一个数字0 .9999所以你必须倍它-2 - 2 = 4

,然后才能得到减去2 -2 2

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

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

相关问题