2012-02-21 55 views
5

我正在用Java創建神經網絡,並需要創建一個方法來初始生成隨機權重。獲得-1和1之間的隨機雙值

我需要創建一個函數,返回-1和1之間的隨機雙值,但不確定這樣做的邏輯,所以任何幫助將不勝感激。

+1

你想在範圍的末端包含或排他?或者兩端不同?當你談論範圍時,你應該總是指定。您至今爲止的答案包括-1,但不包括1. – paxdiablo 2012-02-21 22:05:42

+0

...因爲Math.random()返回一個具有正號的double值,*大於或等於*爲0.0,*小於* 1.0。直到大約30秒前我才知道...... – DNA 2012-02-21 22:06:03

+0

@pax在處理真正的時間間隔時,終點[幾乎肯定](http://en.wikipedia.org/wiki/Almost_surely)永遠不會被挑選出來。當處理浮點間隔時,隨機選擇一個端點的概率僅略高。 – 2012-02-21 22:07:16

回答

7

Math.random()會給你一個隨機的雙0和1之間,您可以乘以2這個結果再減去1的隨機雙-1和1

之間。或者你可以使用同樣的改造通話從java.util.RandomnextDouble()方法,但是這需要明確的Random實例,而這是在Math.random()的幕後完成的。

9

您可以使用Random類的nextDouble()方法。

Random rng = new Random(); 
// to get a double between -1 and 1 
return rng.nextDouble() * 2 - 1; // rng.nextDouble() is between 0 and 1