文章目录

  • 1. 前言
  • 2. 随机数生成
    • 2.1 rand( )
    • 2.2 random_seed和random_number

1. 前言

在写fortran程序时用到了随机数生成,记录一下折腾的过程备用

2. 随机数生成

2.1 rand( )

直接调用rand(),

my_refresh(i,j,k)=(itr*i*j+K)/(rand()*10)

编译器报错
This name does not have a type, and must have an explicit type. [RAND]
经查,rand() 是某些编译器的扩展,并不标准。是很早以前语法里没有 random_number时,编译器为了满足用户需求自己提供的。
(求助fortran的rand使用,谢谢)

2.2 random_seed和random_number

改用random_number后

my_refresh(i,j,k)=(itr*i*j+K)/(RANDOM_NUMBER()*10)

依然报错
This name does not have a type, and must have an explicit type. [RANDOM_NUMBER]
应该是把RANDOM_NUMBER当做未定义的变量了。RANDOM_NUMBER(9.225 RANDOM_NUMBER — Pseudo-random number)是一个函数,可以有一个参数,即返回的随机数。

为了使随机效果更好,增加random_seed根据日期和时间随机地提供种子,使得随机数更随机。


program random
   implicit none
   real :: x
   call random_seed ()     ! 系统根据日期和时间随机地提供种子
   call random_number (x)  ! 每次的随机数就都不一样了
   write(*,*) x  !输出一个0——1之间的随机数
   stop
end program random

(20181111)Fortran 产生随机数本文还提供了产生区间内随机数和随机数组的产生发方法。

暂时就用这些,其他的以后再修改吧。

更多推荐

Fortran-随机数生成