pengbin's Blog on Sciencenet分享 http://blog.sciencenet.cn/u/peluo Hydroclimatology, Hydrometeorology, Land-Atmosphere Interaction, Remote Sensing and Data Assimilation

博文

Fortran学习笔记(4): 伪随机数生成方法

已有 15242 次阅读 2013-10-7 18:42 |个人分类:Fortran|系统分类:科研笔记| Fortran, 随机数, Number, Random

  • 由U(0, 1)随机数产生N(0, 1)和N(μ, σ2)随机数

    假设X1~U(0, 1), X2~U(0, 1), 且X1和X2相互独立,则根据Box-Muller变换有如下关系:

    $Y_{1}=\sqrt{-2lnX_{1}}cos\left ( 2\pi X_{2} \right )$ ~N(0, 1)

    $Y_{2}=\sqrt{-2lnX_{1}}sin\left ( 2\pi X_{2} \right )$ ~N(0, 1)

    即Y1和Y2都属于标准正态分布,且相互独立。

    由标准正态分布N(0, 1)产生任意正态分布N(μ, σ2)就很简单了,只需要指定均值μ和标准差σ两个参数就可以了。

    Fortran程序示例:

    **************************************

    call random_seed()

    call random_number(x1)

    call random_seed()

    call random_number(x2)

    y=sqrt(-2*log(x1))*cos(2*3.141593*x2)

    ****************************************

    Ref:

    Box-Muller变换

    http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform

    侯文, 2005. 常用概率分布间的关系

    http://wenku.baidu.com/view/37ccbacf0508763231121279

    陶会强, 2011. 常

    http://wenku.baidu.com/view/ab62251c0b4e767f5acfce3c.html




https://blog.sciencenet.cn/blog-430991-730847.html

上一篇:Fortran学习笔记(3): 一些非常有用的Fortran函数库
下一篇:状态变量(State Variable)与诊断变量(Diagnostic Variable)
收藏 IP: 210.72.26.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 06:28

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部