声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2576|回复: 0

[Fortran] Fortran 生成正态分布数据

[复制链接]
发表于 2015-11-3 17:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本例提供了用Fortran生成正态分布数据的代码和示范。完全符合Fortran语法,可直接使用。
本例使用了 Fortran90 提供的 random_seed 和 random_number 函数,用户无需手动再调用他们。

20140202093659753.jpg
  1. Module ran_mod
  2.   Implicit None
  3. ! ran return a uniform random number between 0-1  
  4. ! norma return a normal distribution  
  5. contains
  6.   function ran()   !returns random number between 0 - 1  
  7.     implicit none
  8.     integer , save :: flag = 0
  9.     double precision :: ran
  10.     if(flag==0) then
  11.       call random_seed()
  12.       flag = 1
  13.     endif
  14.     call random_number(ran)     ! built in fortran 90 random number function  
  15.   end function ran
  16.   
  17.   function normal(mean,sigma)
  18.     implicit none
  19.     integer :: flag
  20.     double precision, parameter :: pi = 3.141592653589793239  
  21.     double precision :: u1, u2, y1, y2, normal, mean, sigma
  22.     save flag
  23.     data flag /0/
  24.     u1 = ran(); u2 = ran()
  25.     if (flag.eq.0) then
  26.       y1 = sqrt(-2.0d0*log(u1))*cos(2.0d0*pi*u2)
  27.       normal = mean + sigma*y1
  28.       flag = 1
  29.     else
  30.       y2 = sqrt(-2.0d0*log(u1))*sin(2.0d0*pi*u2)
  31.       normal = mean + sigma*y2
  32.       flag = 0
  33.     endif  
  34.   end function normal
  35. !The above codes are made in Fortran 90 language, if you have any question, you may write to sealin2008@hotmail.com
  36. End Module ran_mod

  37. Program www_fcode_cn
  38.   use ran_mod
  39.   Implicit None
  40.   Integer , parameter :: N = 10000
  41.   Real( Kind = 8 ) :: a( N )
  42.   integer :: i
  43.   Open( 12 , File = 'out.txt' )
  44.   Do i = 1 , N
  45.     a( i ) = normal( 5.0D0 , 2.0D0 )
  46.     write( 12 , * ) a(i)
  47.   End Do
  48.   Close( 12 )
  49. End Program www_fcode_cn
复制代码
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 06:03 , Processed in 0.070134 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表