电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

fortran产生随机数方法介绍

fortran产生随机数方法介绍_第1页
1/9
fortran产生随机数方法介绍_第2页
2/9
fortran产生随机数方法介绍_第3页
3/9
fortran 产生随机数方法介绍(附代码) 注意:现在计算机产生的随机数都是伪随机数。 1.0-1 之间均匀分布的随机数 random_number(x) 产生一个 0 到 1 之间的随机数(x 可以是向量),但是每次总是那几个数。 用了 random_seed ()后,系统根据日期和时间随机地提供种子,使得随机数更随机了。 program random implicit none real :: x call random_seed () ! 系统根据日期和时间随机地提供种子 call random_number (x) ! 每次的随机数就都不一样了 write(*,*) x stop end program random 2.任意区间均匀分布的随机数 function my_random (lbound,ubound) implicit none real :: lbound,ubound real :: len real :: my_random real :: t len=ubound-lbound !计算范围大小 call random_number(t) !t 是0-1 之间的随机数 my_random=lbound+len*t return end 注意:在循环外 call random_seed() 3.产生一个随机数数组,只需加一个循环即可 function my_random (lbound,ubound) implicit none real :: lbound,ubound real :: len integer size real :: my_random(size) !size 代表数组元素的个数 real :: t integer i len=ubound-lbound !计算范围大小 do i=1,10 call random_number(t) !t 是0-1 之间的随机数 my_random(i)=lbound+len*t !把 t 转换成 lbound-ubound 间的随机数 end do return end 注意:同理在循环外 call random_seed() 4.标准正态分布随机数/高斯分布随机数 (1)徐士良的那本程序集里介绍了正态分布随机数产生的原理,不过他的方法只能产生较为简 单的随机数,随机数的质量并不高,特别是随机数的数目较多时。 (2)Box 和 Muller 在 1958 年给出了由均匀分布的随机变量生成正态分布的随机变量的算法。 设 U1, U2 是区间 (0, 1) 上均匀分布的随机变量,且相互独立。令 X1 = sqrt(-2*log(U1)) * cos(2*PI*U2); X2 = sqrt(-2*log(U1)) * sin(2*PI*U2); 那么 X1, X2 服从 N(0,1) 分布,且相互独立。等于说我们用两个独立的 U(0,1) 随机数得到了 两个独立的 N(0,1)随机数。 值得说明的是,该方法产生的随机数质量很高。嘻嘻,本人亲自验证过。 SAS 和蒙特卡罗模拟_随机数 一、为什么选择 SAS 做蒙特卡罗模拟? 为什么要用SAS 做蒙卡?首先,对我来说,我只会用SAS,而且打...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

fortran产生随机数方法介绍

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部