2015-11-10 92 views
0

我目前正試圖以這種方式使-0.5和0.5之間的隨機數:Java函數隨機數

public static double RandomNumberGenerator(long seed) 
{ 
    Random r = new Random(seed); 
    return r.nextDouble() >= 0.5? 0.5 : -0.5; 

    //PRINTING AND USAGE, SHOULD GO ABOVE 
    //System.out.println("Object after seed 12222222: " + RandomNumberGenerator(12222222)); 
} 

然後我執行這樣的:

for (int j = 0; j < weights_one.length ; j++) 
    { 
     weights_one[j] = RandomNumberGenerator(System.currentTimeMillis()); 
    } 

但它確實不正常的,因爲我總是用權,這將是相同的結束,即

weights_one[0]: -0.5 
weights_one[1]: -0.5 
weights_one[2]: -0.5 
weights_one[3]: -0.5 
weights_one[4]: -0.5 

這是不好的,他們應該gausianly分佈,我怎麼能做到這一點?

回答

1

隨機類創建僞隨機數。我在代碼中發現了兩個錯誤:

  1. 對於每個循環迭代,您創建一個隨機實例。只需在for的開頭創建一個。
  2. 隨機生成[0,1]之間的數字。要翻譯爲區間[-0.5,0.5],只需將0.5減去隨機函數。

您的代碼可以被替換爲:

Random r = new Random(System.currentTimeMillis()); 
for (int j = 0; j < weights_one.length ; j++) 
{ 
    weights_one[j] = r.nextDouble() -0.5; 
} 
+0

我一直在做這個,這個項目 - 不正是這個功能,這麼多小時我的腦袋耐火你能告訴我什麼你意思是? –

+0

我剛剛修改了答案,向你展示了我的意思。 – xcesco