2012-02-21 7 views
5

私はJavaでニューラルネットワークを作成しています。最初はランダムウェイトを生成するメソッドを作成する必要があります。-1と1の間のランダムなdouble値の取得

-1と1の間のランダムなdouble値を返す関数を作成する必要がありますが、これを行うためのロジックが不明なので、どんなヘルプにも感謝します。

+1

範囲の末尾に含めますか排他的ですか?または両端で異なる?範囲について話しているときは、常にそれを指定する必要があります。今までの回答には-1が含まれていますが、1は除外されています。 – paxdiablo

+0

... Math.random()は正の符号を持つdouble値を返すため、*以上、*は0.0、*は* 1.0未満です。私は約30秒前まで知りませんでした... – DNA

+0

@pax実際の間隔を扱うとき、エンドポイントは[ほぼ確実に](http://en.wikipedia.org/wiki/Almost_surely)とにかく選択されません。代わりに浮動小数点間隔を扱う場合、エンドポイントをランダムに選択する確率はわずかに高くなります。 –

答えて

7

Math.random()はまた、あなたがコールに同じ変換を適用することができ、あなたが

-1と1の間のランダムな二重のための1を2でその結果を乗算し、減算することができます0と1の間のランダムな二重を与えますnextDouble()メソッドからjava.util.Randomまでですが、これは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 
関連する問題