2012-05-10 55 views
2

可能重複:
Random floating point double in Inclusive Range隨機漂浮在Java

我工作的一個項目,我需要在0.0和1.0兩個(含)之間的隨機浮點。考慮過了一會兒,我發現它的propably不是我的項目,該項目重要,無論如何,所以我只是用標準:

new Random().nextFloat(); 

產生從0.0(inlcusive)到1.0(不含)的浮動。

但我不能停止思考它是如何實現與1.0包含?我能想到的

一種方法是(僞):

new Random().nextFloat() * (1.0 + "lowest possible value above 0"); 

我能想到的另一種方法是:

float myRandomFloat = 0; 
float rand1 = new Random().nextFloat(); // [0;1) 
float rand2 = 1.0f - new Random().nextFloat(); // (0;1] 
boolean randPicker = new Random().nextBoolean(); 
if (randPicker) 
    myRandomFloat = rand1; 
else 
    myRandomFloat = rand2; 

但我認爲這應該是更簡單或不?所以我真正的問題是:是否有一個真正的或更好的方式來做到這一點?

回答

-3

如果將Random()。nextFloat()乘以10,它會給你一個從0到9的數字,它們是數字系統中的基數,所以數字10並不存在,但它是兩個基數,所以你永遠無法將它作爲一個隨機數,但如果你真的需要它,我會選擇第二個選項。

+0

10與什麼有什麼關係? –

+0

如果有任何方法乘以Random()。nextFloat()得到10,那麼你也可以得到1,這將是這個問題的解決方案。 –

+0

毫米如果你乘以11,然後使用圓,你會得到0到10之間的數字均勻分佈 –