2014-11-05 106 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)

相關問題