首页 > 代码 > 行业代码 > 正文

代码

阅读排行

Fortran 生成正态分布数据
2014-02-02 09:34:52   来源:Fcode研讨团队   评论:0 点击:

本例提供了用Fortran生成正态分布数据的代码和示范。完全符合Fortran语法,可直接使用

本例提供了用Fortran生成正态分布数据的代码和示范。完全符合Fortran语法,可直接使用。

本例使用了 Fortran90 提供的 random_seed 和 random_number 函数,用户无需手动再调用他们。

\

Module ran_mod
  Implicit None
! ran return a uniform random number between 0-1  
! norma return a normal distribution  
contains 
  function ran()   !returns random number between 0 - 1  
    implicit none 
    integer , save :: flag = 0
    double precision :: ran 
    if(flag==0) then 
      call random_seed()
      flag = 1 
    endif 
    call random_number(ran)     ! built in fortran 90 random number function  
  end function ran
  
  function normal(mean,sigma) 
    implicit none 
    integer :: flag 
    double precision, parameter :: pi = 3.141592653589793239  
    double precision :: u1, u2, y1, y2, normal, mean, sigma 
    save flag 
    data flag /0/ 
    u1 = ran(); u2 = ran() 
    if (flag.eq.0) then 
      y1 = sqrt(-2.0d0*log(u1))*cos(2.0d0*pi*u2) 
      normal = mean + sigma*y1 
      flag = 1 
    else 
      y2 = sqrt(-2.0d0*log(u1))*sin(2.0d0*pi*u2) 
      normal = mean + sigma*y2 
      flag = 0 
    endif  
  end function normal 
!The above codes are made in Fortran 90 language, if you have any question, you may write to sealin2008@hotmail.com 
End Module ran_mod

Program www_fcode_cn
  use ran_mod
  Implicit None
  Integer , parameter :: N = 10000
  Real( Kind = 8 ) :: a( N )
  integer :: i
  Open( 12 , File = 'out.txt' )
  Do i = 1 , N
    a( i ) = normal( 5.0D0 , 2.0D0 )
    write( 12 , * ) a(i)
  End Do
  Close( 12 )
End Program www_fcode_cn

相关热词搜索:Fortran 正态分布 高斯分布

上一篇:几何关系函数库
下一篇:三维向量叉乘函数

分享到: 收藏