【发布时间】:2012-02-21 21:47:11
【问题描述】:
我正在用 Java 创建一个神经网络,需要创建一个方法来最初生成随机权重。
我需要创建一个函数,它返回一个介于 -1 和 1 之间的随机双精度值,但不确定这样做的逻辑,因此非常感谢任何帮助。
【问题讨论】:
-
您希望它在范围末端包含还是排除?还是两端不一样?在谈论范围时,您应该始终指定这一点。您迄今为止的答案包括 -1 但不包括 1。
-
...因为 Math.random() 返回一个带正号的双精度值,大于或等于到 0.0 并且小于 1.0 .直到大约 30 秒前我才知道...
-
@pax 在处理实际间隔时,无论如何都不会选择端点almost surely。当处理浮点区间时,随机选择端点的概率仅略高。
-
@MichaelMcGowan,这对于上端点是正确的,但不是下端点,
nextInt()及其兄弟通常会返回零 - 嗯,与预期的一样频繁:-) 我只是说它很重要了解两个端点的期望行为(在问题中)和实际行为(在答案中)。 -
@Michael 就我个人而言,我通常会包括下限,但不包括上限 - 我看不出有什么好的理由为浮点数更改它? (好吧,
higher bound == lower bound of next element不太可能对浮点数有用,但为什么要使用两种不同的约定呢?)