博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Fortran根据系统时间生成随机数
阅读量:5877 次
发布时间:2019-06-19

本文共 940 字,大约阅读时间需要 3 分钟。

hot3.png

FORTRAN中用于产生随机数的子程序有random_seed和random_number,其中random_seed产生seed,random_number根据seed的值产生随机数。当random_seed()的参数为空时,其会给出一个默认的seed值,这意味着每次调用时产生的随机数都是相同的。(这也是有用的,这意味着你每次在执行程序的时候,会获得相同随机数序列,这些便于调试,但是有时候可能会需要每次生成不同的随机数序列以满足程序的要求)。

下面的方法利用系统时间产生随机数:

      subroutine init_random_seed()      integer :: i,n,clock      integer,dimension(:),allocatable :: seed      call random_seed(size=n)      allocate(seed(n))      call system_clock(count=clock)      seed=clock+37*(/(i-1,i=1,n)/)      call random_seed(PUT=seed)       deallocate(seed)      end subroutine

该子程序来源于GNU Fortran:

(以上内容转载自:

调用通过如下程序可进行调用:

      program randomnum      implicit real*8(a-h,o-z)      call init_random_seed()      call random_number(x)      write(*,*)x      end

注意:在一个程序中只需调用一次子程序 init_random_seed(),特别是在有另一个子程序也需要产生随机数的情况下,仍无需(说是不能或许更为恰当些)再次调用init_random_seed()。否则,若两次调用时间相差很小,可能出现生成的随机数的seed一样的情况,此时就会出现某个随机数连续出现若干次的情况。

转载于:https://my.oschina.net/u/1037903/blog/226730

你可能感兴趣的文章
C/C++ 多线程机制
查看>>
js - object.assign 以及浅、深拷贝
查看>>
python mysql Connect Pool mysql连接池 (201
查看>>
Boost在vs2010下的配置
查看>>
一起谈.NET技术,ASP.NET伪静态的实现及伪静态的意义
查看>>
20款绝佳的HTML5应用程序示例
查看>>
string::c_str()、string::c_data()及string与char *的正确转换
查看>>
11G数据的hive初测试
查看>>
如何使用Core Text计算一段文本绘制在屏幕上之后的高度
查看>>
==和equals区别
查看>>
2010技术应用计划
查看>>
XML 节点类型
查看>>
驯服 Tiger: 并发集合 超越 Map、Collection、List 和 Set
查看>>
Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现...
查看>>
Template Method Design Pattern in Java
查看>>
MVC输出字符串常用四个方式
查看>>
LeetCode – LRU Cache (Java)
查看>>
JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)...
查看>>
【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2
查看>>
nginx+php的使用
查看>>