Javascript 产生随机数——服从均匀分布随机数、服从正态分布(高斯分布)随机数、服从柯西分布随机数
文章目录
- 1 产生服从均匀分布随机数
- 2 产生服从正态分布随机数
- 3 产生服从柯西分布随机数
1 产生服从均匀分布随机数
大家都知道Math.random
是 javascript 中返回伪随机数的方法,但Math.random()产生 [0,1)区间的随机数(注意,不包括1),如果要取到1,可以这样:Math.floor(Math.random()*2);
,取到 [0,2)之间的数然后向下取整,得到[0,1]。
取整数随机数要使用 floor 函数向下取整,而不能使用 round 函数四舍五入取整,round 取整后得到的是非均匀分布。
如果要取得特定范围的随机数可以对Math.random
进行四则运算
例如:
//[10,20)
a=Math.random*10+10;
//[10,20]
a=Math.floor(Math.random()*11+10);
2 产生服从正态分布随机数
正态分布即高斯分布
Box-Muller变换是通过服从均匀分布的随机变量,来构建服从正态分布的随机变量的一种方法。
function normalRandom(mean, std) {let u = 0.0, v = 0.0, w = 0.0, c = 0.0;do {//获得两个(-1,1)的独立随机变量u = Math.random() * 2 - 1.0;v = Math.random() * 2 - 1.0;w = u * u + v * v;} while (w == 0.0 || w >= 1.0)//Box-Muller转换c = Math.sqrt((-2 * Math.log(w)) / w);let normal = mean + (u * c) * std;return normal;}//用于生产服从正态分布的随机数矩阵function normalRandomSize(mean,std,size){let normal = [];for(let i=0;i<size;i++){normal[i]=randomNormal(mean,std);}return normal;}
3 产生服从柯西分布随机数
柯西分布的概率密度函数为
f(x)=βπ[β2+(x−α)2]β>0f(x)=\frac{\beta }{\pi [\beta ^{2}+ (x - \alpha)^{2}]} \qquad \beta > 0 f(x)=π[β2+(x−α)2]ββ>0
通常用C(α,β)C(\alpha ,\beta )C(α,β)表示,其分布函数为
F(x)=12+1πarctan(x−αβ)F(x)=\frac{1}{2}+\frac{1}{\pi }arctan(\frac{x-\alpha}{\beta }) F(x)=21+π1arctan(βx−α)
用逆变换法产生柯西分布(Cauchy(\alpha ,\beta ))的随机变量(x),产生均匀分布的随机数uuu,计算具体方法如下: x=α−βtan(πu)x=\alpha - \frac{\beta }{tan(\pi u)} x=α−tan(πu)β
function cauchyRandom(a,b) {let u,cauchy;u = Math.random();cauchy = a - b / Math.tan(Math.PI * u);return cauchy;}
Javascript 产生随机数——服从均匀分布随机数、服从正态分布(高斯分布)随机数、服从柯西分布随机数相关推荐
- 【Python】如何生成柯西分布随机数
Python中生成标准柯西分布的函数是:numpy.random.standard_cauchy(size), 我就在想,能否生成一个非标准的柯西随机数呢?那么面临几个问题: (1)标准柯西随机数和非 ...
- 均匀分布叠加与正态分布叠加
1 理论 1.1 两个正态分布之和为正态分布 1.2 均匀分布相减 x 1 ∼ U ( 0 , 1 ) x 2 ∼ U ( 0 , 1 ) z = x 1 − x 2 \begin{array}{l} ...
- python随机数列表变成字符串_DAY8 for Python--字符串与随机数
字符串 str_list=['hello','world'] [i.upper() for i in str_list] 结果:['HELLO', 'WORLD'] np.char免去列表的遍历,大大 ...
- 用java script随机数_js中Math.random()生成指定范围数值的随机数【转】
Math.random函数就不像php的rand函数一样可以生成指数范围的数据了,math.random只是生成了一个伪随机数,之后还要经过我们处理才行哦. 今天又有网友问到我 JavaScript ...
- java 生成不重复随机数_Java如何实现生成n个不重复的随机数 Java实现生成n个不重复的随机数代码...
Java如何实现生成n个不重复的随机数?本篇文章小编给大家分享一下Java实现生成n个不重复的随机数代码,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 需 ...
- java随机10位随机数 random.uuid_一文详解编程中的随机数
随机数,相信大家都不陌生,网上有很多生成随机数的小工具.直观来看,随机数就是一串杂乱无章的数字.字母.以及符号的组合, 比如pSTkKIiZMOlDxOgwpIQGdlZwrJCRiHRK.但随机数真 ...
- R语言使用rgamma函数生成符合Gamma分布的随机数、使用plot函数可视化符合Gamma分布的随机数(Gamma Distribution)
R语言使用rgamma函数生成符合Gamma分布的随机数.使用plot函数可视化符合Gamma分布的随机数(Gamma Distribution) 目录
- PT_二维连续型随机变量(二维均匀分布@二维正态分布)
文章目录 PT@经典二维分布@二维均匀分布@二维正态分布 二维均匀分布 性质 例 正态分布小结 一维正态分布 二维正态分布 二维正态分布 二维正态概率密度 边缘密度函数
- 正态分布高斯分布泊松分布_正态分布:将数据转换为高斯分布
正态分布高斯分布泊松分布 For detailed implementation in python check my GitHub repository. 有关在python中的详细实现,请查看我的 ...
最新文章
- 稍等片刻 正在提取文件_三亚种子罐市场价,中药提取浓缩设备的价格
- android view取坐标点,Android 获取子 View 的位置及坐标的方式
- 设计模式-行为型模式-观察者模式
- Simulink之三相半波可控整流电路
- sql string转number_少用 string.Format
- JSP教程第5讲笔记
- 热烈庆贺博客等级V7
- 从海报视觉到网页设计
- Pinyin 拼音转换工具类
- 联发科MT7621 Openwrt开发编译记录
- Html页面点击下载文件
- 如何将电脑文字复制到模拟器_如何将电脑中的文字复制到手机上?
- Blend for Visual Studio 概述
- 南京 学计算机的学校,南京小学生暑假学计算机编程去哪家学校好
- Python数据分析:异常值检验的两种方法 -- Z 分数 上下分位点(放入自写库,一行代码快速实现)
- 技术书写作你要知道的几件事
- c语言Int16_t 什么意思,__IO uint16_t 是什么意思,在定义参数时为什么不直接写成 uint16...
- 打印机打印出来的条码是歪的怎么办
- 搭建maven私服发布项目并从私服下载jar包
- Fitbit表高兴太早,廉价手环和智能手表的威胁就在眼前