用MKL库vRngUniform函数产生uniform随机数的fortran模块
来源:互联网 发布:淘宝无线店铺网址 编辑:程序博客网 时间:2024/05/23 11:11
因特尔 MKL 性能库具有很高的运行效率,而且结合了intel自身处理器的特点进行了优化。MKL 包含了BLUS和LAPACK等。下面我们介绍一下怎样利用它生成uniform随机数
模块代码如下,_s 表示对应单精度 single,函数具体参数请参考intel官方手册https://software.intel.com/fr-fr/node/521872
该模块可以生成固定的随机数序列,并且通过使用变量index_s,生成一次数据流,多次调用。具体使用:
调用随机数时,随机数存储 random = gene_random_s()
在程序结束时释放数据流 end_gene_random_s()
include "mkl_vsl.f90"Module test_random_s use mkl_vsl_typeuse mkl_vslIMPLICIT NONEinteger,parameter :: nr_s = 1 !Number of values required (whatever you want)integer :: status_s !Error / status integer :: brng_s !Index of generator to initialize stream integer :: method_s !Method = 0 in case of uniform distribution integer :: seed_s !Initial condition of the stream TYPE (VSL_STREAM_STATE) ,save:: stream_s !Random streamreal ::r_s(nr_s)real ::a_s, b_sinteger, save :: index_s = 0 containsSUBROUTINE inita_gene_random_s() !initialize uniformIMPLICIT NONEa_s = 0.0b_s = 1.0method_s = VSL_RNG_METHOD_UNIFORM_STD !NB - are different alternatives, but I found this worked wellbrng_s = VSL_BRNG_SFMT19937 seed_s = 777 ! <== different values may be needed depending on applicationr_s = 0.0status_s = vslnewstream( stream_s, brng_s, seed_s ) !Create new stream (SOBOL in this caseEND SUBROUTINE inita_gene_random_s FUNCTION gene_random_s() result(num_random_s) !generate random numberIMPLICIT NONEreal :: num_random_s if(index_s == 0) then call inita_gene_random_s() index_s = index_s + 1endifstatus_s = vsrnguniform( method_s, stream_s, nr_s, r_s, a_s, b_s ) num_random_s = r_s(1)END FUNCTION gene_random_sSUBROUTINE end_gene_random_s() !delete the streamIMPLICIT NONEstatus_s = vsldeletestream( stream_s ) !Delete the streamEND SUBROUTINE end_gene_random_sEND MODULE test_random_s
0 0
- 用MKL库vRngUniform函数产生uniform随机数的fortran模块
- fortran 产生随机数
- 产生随机数的函数
- VBA产生随机数的函数
- JAVA的一个随机数产生模块
- 随机数产生函数总是产生相同随机数的原因
- Fortran 随机数产生的子程序(调用系统时间单位为毫秒)
- C++中产生随机数的函数
- 计算机的随机数函数和产生原理
- C++语言产生随机数的函数
- ABAP中产生随机数的函数
- 自定义PHP产生连续的随机数函数
- C语言产生随机数的函数
- 与产生随机数相关的函数
- 一个简单的随机数产生函数
- 一个随机数函数和产生随机数的类
- rand()函数产生的随机数为什么是伪随机数?
- 产生随机数:arc4random()函数
- DataTable查询
- vb(2) picturebox、hscrollbar、vscrollbar实现滚动浏览
- Android BaseAdapter介绍和优化
- 建造者模式
- springmvc学习笔记(8)——使用Servlet原生API作为参数
- 用MKL库vRngUniform函数产生uniform随机数的fortran模块
- 2440的Nand启动
- startActivityForResult 用在于多个Activity之间传值时一些需要注意的用法
- 排列的递归实现
- 日拱一卒(五十一)
- 不带css的版本
- 坦克论
- VIM 全选命令
- lua语言学习——入门之环境搭建(纯lua)