Javascript 随机数函数 学习之二:产生服从正态分布随机数

2023-09-24 6 0

 

一、为什么需要服从正态分布的随机函数

一般我们经常使用的随机数函数 Math.random() 产生的是服从均匀分布的随机数,能够模拟等概率出现的情况,例如 扔一个骰子,1到6点的概率应该相等,但现实生活中更多的随机现象是符合正态分布的,例如20岁成年人的体重分布等。

 

假如我们在制作一个游戏,要随机设定许许多多 NPC 的身高,如果还用Math.random(),生成从140 到 220 之间的数字,就会发现每个身高段的人数是一样多的,这是比较无趣的,这样的世界也与我们习惯不同,现实应该是特别高和特别矮的都很少,处于中间的人数最多,这就要求随机函数符合正态分布。

 

二、正态分布复习

 

图片来自:http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83

具体性质也请查阅上面链接,描述正态分布的主要特征是均值和方差,如上图,最左的倒钟形图的均值为-2, 其余为0 ;

 

方差越大,钟形越扁平,方差越小越陡;

  • 密度函数图像关于均值对称。
  • 在x=μ±σ处,曲线有拐点。
  • 函数曲线下68.26%的面积在平均数左右的一个标准差σ的区间内。
  • 95.44%的面积在平均数左右两个标准差2σ的区间内。
  • 99.74%的面积在平均数左右三个标准差3σ的区间内。

当均值为0, 方差为 1 时称为标准正态分布;

 

 

三、由均匀分布经 “Box-Muller法” 转换为正态分布

 

通过查阅文献可知(请参见:http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform),有一个称为 Box-Muller (1958) 转换的算法能够将两个在区间

代码编程
赞赏

相关文章

在用form 提交请求时,在请求处理完成后想要在JAVA后台设置返回信息状态展示到页面
深入探讨 Java 类加载器(转)
转载到QQ空间的js实现
web项目中参数传递乱码解决方法
tomcat 类加载时找不到class类文件
CRT工具远程Linux系统服务器的 命令