计算机正态分布随机数范围,正态分布随机数
时间关系暂时先不介绍啥是正态分布了,网上关于生成正态分布随机数的方法也有很多。
下面是moro 逆正态累积分布函数(Moro's Inverse Cumulative Normal Distribution function)
double MoroInvCND(double prob)
{
const double a1 = 2.50662823884;
const double a2 = -18.61500062529;
const double a3 = 41.39119773534;
const double a4 = -25.44106049637;
const double b1 = -8.4735109309;
const double b2 = 23.08336743743;
const double b3 = -21.06224101826;
const double b4 = 3.13082909833;
const double c1 = 0.337475482272615;
const double c2 = 0.976169019091719;
const double c3 = 0.160797971491821;
const double c4 = 2.76438810333863E-02;
const double c5 = 3.8405729373609E-03;
const double c6 = 3.951896511919E-04;
const double c7 = 3.21767881768E-05;
const double c8 = 2.888167364E-07;
const double c9 = 3.960315187E-07;
double z;
bool negate = false;
const double maxValue = static_cast(0xffffffffUL);
// Ensure the conversion to floating point will give a value in the
// range (0,0.5] by restricting the input to the bottom half of the
// input domain. We will later reflect the result if the input was
// originally in the top half of the input domain
unsigned int x = (unsigned int)(prob * maxValue);
if (x >= 0x80000000UL)
{
x = 0xffffffffUL - x;
negate = true;
}
// x is now in the range [0,0x80000000) (i.e. [0,0x7fffffff])
// Convert to floating point in (0,0.5]
const double x1 = 1.0 / maxValue;
const double x2 = x1 / 2.0;
double p1 = x * x1 + x2;
// Convert to floating point in (-0.5,0]
double p2 = p1 - 0.5;
// The input to the Moro inversion is p2 which is in the range
// (-0.5,0]. This means that our output will be the negative side
// of the bell curve (which we will reflect if "negate" is true).
// Main body of the bell curve for |p| < 0.42
if (p2 > -0.42)
{
z = p2 * p2;
z = p2 * (((a4 * z + a3) * z + a2) * z + a1) / ((((b4 * z + b3) * z + b2) * z + b1) * z + 1.0);
}
// Special case (Chebychev) for tail
else
{
z = log(-log(p1));
z = - (c1 + z * (c2 + z * (c3 + z * (c4 + z * (c5 + z * (c6 + z * (c7 + z * (c8 + z * c9))))))));
}
// If the original input (x) was in the top half of the range, reflect
// to get the positive side of the bell curve
return negate ? -z : z;
}
那么如何使用呢:
MoroInvCND(0.5)
输出的是累积概率到0.5的那个对应的值,即0。
所以可以先随机生成(0,1)之间的随机数,然后用上面的函数将其转换成正态分布的随机数
计算机正态分布随机数范围,正态分布随机数相关推荐
- 选择公理可能不成立,否则计算机可以生成真正的随机数
选择公理可能不成立,否则计算机可以生成真正的随机数 对于不可数无穷大,选择公理可能不成立,否则计算机可以生成真正的随机数. 证明以后贴上来.
- python中的numpy标准正态分布_Numpy创建正态分布和均匀分布
一.正态分布 1.1 基础概念复习:正态分布(理解) a. 什么是正态分布 正态分布是一种概率分布.正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个 ...
- c语言生成随机数(c语言生成随机数并排序)
vc环境下c语言怎么生成随机数能给个0-100之间的程序最好了- r = ( (double)rand() / ((double)(RAND_MAX) (double)(1)) ); 请问如何用C语言 ...
- 随机数:真随机数和伪随机数
说到随机这个词,相信各位肯定都深有体会了.生活中有太多的不确定因素从各方各面影响着我们,但也正是因为这样我们的人生更加多彩,具有了更多的可能性. 可以说,随机是个非常有魅力的东西. 你在生活中可能因为 ...
- R语言Box-Cox变换实战(Box-Cox Transformation):将非正态分布数据转换为正态分布数据、计算最佳λ、变换后构建模型
R语言Box-Cox变换实战(Box-Cox Transformation):将非正态分布数据转换为正态分布数据.计算最佳λ.变换后构建模型 目录
- 获取连续生成的100-200范围的随机数,直到生成的随机数与前一个随机数相等,停止运行
编写程序,获取连续生成的100-200范围的随机数,直到生成的随机数与前一个随机数相等,停止运行 题目:编写程序,获取连续生成的100-200范围的随机数,直到生成的随机数与前一个随机数相等,停止运行 ...
- python画成绩正态分布图_正态分布为何如此重要?
在机器学习的世界中,以概率分布为核心的研究大都聚焦于正态分布.本文将阐述正态分布的概率,并解释它的应用为何如此的广泛,尤其是在数据科学和机器学习领域,它几乎无处不在. 我将会从基础概念出发,解释有关正 ...
- php 正态分布数据描述,正态分布-统计百科- 人大经济论坛-经管百科
正态分布(normal distribution) 什么是正态分布编辑本段回目录 正态分布是一种概率分布.正态分布是具有两个参数μ和σ2的连续型随机变量的分布,第一参数μ是遵从正态分布的随机变量的均值 ...
- 在多个指定区间内生成随机数,且随机数总和固定算法
在多个指定区间内生成随机数,且随机数总和固定算法 一.介绍 最近项目上遇到了一个需求就是在多个指定区间内生成总和恒定的随机数. 示例:在[1-3].[4-20].[24-100]区间上分别生成一个随机 ...
- 概率论笔记(六)一维正态分布/二维正态分布/多维正态分布
文章目录 一:一维正态分布 二:二维正态分布/多维正态分布 三:各向同性正态分布 一:一维正态分布 二:二维正态分布/多维正态分布 三:各向同性正态分布 各向同性的高斯分布(球形高斯分布)指的是各个方 ...
最新文章
- hive 语句总结_大数据分析工程师面试集锦4-Hive
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)
- 皮一皮:再一次,有钱人的世界我不懂...
- comparable和comparator比较
- Node.js 博客实例(一)简单博客
- IO系统性能之二:缓存和RAID如何提高IO
- 深入理解Netty高性能网络框架
- git -- 练习的笔记
- 取多补少C语言,leetcode题目: 数字的补数 的C语言解法
- 冬奥网络安全卫士被表彰突出贡献,探寻冬奥背后的安全竞技
- java中的time_java中的Time处理
- JS 常用函数一(弹对话框、操作HTML元素、写HTML文档、写到控制台、查找元素、元素插入内容、改变HTML属性、计时)
- 防止前端脚本JavaScript注入
- 结构化思维:掌握这3点,分析报告不再愁
- abstract、virtual、override 和 new
- LR监控linux系统资源
- mysql innodb 幻读_MySQL InnoDB四个事务级别 与 脏读、不重复读、幻读
- matlab数理统计工具箱,Matlab数理统计工具箱应用简介
- android system image,android systemimage默認大小以及如何修改
- ug添加imachining变量_UG变量设置