Random.nextGaussian()应该给出随机no.s,其均值为0,std偏差为1.许多no.s它生成的范围超出[-1,+ 1].如何设置,以便它只在-1到1的范围内给出正态分布的随机数.
具有平均值0和标准差1的高斯分布意味着分布的平均值为0并且约70%的总体位于[-1,1]范围内.忽略超出范围的数字 - 它们在任何一侧形成约16%的边缘.
也许更好的解决方案是使用mean=0
和生成分布std.dev=0.5
.这将为您提供大约96%的[-1,1]范围内的值的分布.
更好的解决方案是如上所述向后工作并使用大约的想法.99.7%的值位于3-sigma范围内:使用a std.dev = 1/3
.这几乎会使您获得的不太有用的数量无效.当你得到一个,省略它.
当然,如果你正在研究数学密集型产品,那么所有这些都没有任何价值.
正态分布是否包含与平均值相差很远的数字,但概率越来越小?可能是您的愿望(正常且限于特定范围)不相容.
正态分布给出非零(但"变得非常小")的概率,看到[-1,+ 1]之外的值,无论你给出什么方差 - 你只是有效地压扁曲线.
你可以使用一个小的方差,然后通过一个地图运行结果,该地图裁剪任何小于-1到-1的东西,以及任何大于1比1的东西,但它(严格来说)不再是正态分布.
出于兴趣,你需要这个发行版?