2012-02-21 40 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