c++产生均匀分布随机数赋值_不随机的随机数:高斯随机数生成器综述

随机数的使用非常广泛,例如在从统计总体中抽取有代表性的样本时,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡洛模拟法计算的时候等等。事实上,这些统计技术中使用的随机数均为“伪随机数”,由各种各样的随机数生成器生成。

本文将高斯随机数生成器分为四类:一、直接利用累积分布函数的反函数生成随机数;二、转换变形方法,将均匀分布直接转换为高斯分布;三、拒绝采样,在转换方法中增加了按条件拒绝一些转换值;四、递归迭代方法,对已产生的高斯随机数进行线性变换,从而产生新的随机数。

01 反函数算法

基本原理:假设P(X)是一个累积分布函数,P^(-1)是它的反函数,若U是一个服从(0,1)均匀分布的随机变量,则P^(-1)(U)服从函数P给出的分布。

例如要生成一个服从指数分布的随机变量,我们知道指数分布的概率密度函数为

ef6c9a2096e0604f3df9f6bb55f2d2e4.png

则累积分布函数为

fe9235ef0250d42424be80821ecf0da3.png

算法的核心是要找到指数随机变量的值,使得Prob(V≤x)是[0,1]区间上的均匀分布。即给定一个满足均匀分布的变量u之后,要使得

2cee2e4aa150f5885fedc40ccd476253.png

通过求解 x,得到(1)式:

5fe088d1ab709f4acc0a148e28e292aa.png

上式的作用就是把输入的均匀随机数 u 转换为指数随机数。

类似地,对正态分布来说,累积分布函数如下图所示,

e854cb9d8b7fa0061c35f6bad8b45915.png

图1:正态分布累积分布图

在y轴上产生服从(0,1)均匀分布的随机数,水平向右投影到曲线上,再垂直向下投影到x轴,这样在x轴上就得到了正态分布。

然而,正态分布的累

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值