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 产生随机数本文还提供了产生区间内随机数和随机数组的产生发方法。
暂时就用这些,其他的以后再修改吧。