什么是java Random Class中nextGaussian和nextDouble之间的区别?

use*_*005 -2 java random gaussian uniform

如果我想从均匀分布中取样并得到double值,我觉得我可以在java中同时使用Random.nextDouble()或Random.nextGaussian().有人可以向我解释一下这个区别.

Mr *_*Rho 9

根据Java API文档nextDouble:

返回下一个伪随机数,从此随机数生成器的序列中均匀分布介于0.0和1.0之间的double值.

并为nextGaussian:

返回下一个伪随机,高斯("正常")分布的双值,其平均值为0.0,标准偏差为1.0,该随机数生成器的序列.

这与返回某些值的概率有关.对于均匀分布,返回0.0到1.0之间的每个值的概率相等.换句话说,获得0.0的概率与获得0.5或0.7等的概率相同.

对于正态分布,返回值的概率将根据正态分布曲线.得到0.0(平均值)的几率远远大于得到-1.0或1.0,这是与平均值相差1.0的标准偏差.从0.0开始的进一步的负面/正面,获得该数字的概率越低.

  • 请注意,“nextDouble”和“nextGaussian”都可以返回(理论上)*任何*“double”值。请参阅http://stackoverflow.com/questions/43925566/does-java-threadlocalrandom-current-nextgaussian-have-a-limit (2认同)