Fortran-随机数生成

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 产生随机数本文还提供了产生区间内随机数和随机数组的产生发方法。

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

发布了7 篇原创文章 · 获赞 17 · 访问量 6231
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览