| 查看: 2195 | 回复: 2 | ||
[求助]
求助一个fortran的均匀分布随机数函数ran2(idum)问题,谢谢
|
|
fortran的0,1之间均匀分布随机数程序 ran2(idum),为什么我ran2(6)和ran2(10)的结果都是一样的,都是0.6554, 这个ran2在matlab下类似的函数是什么呢?Matlab里有rand, 还是rand(idum,1) ,这里有个比较有意思的是rand是直接出来一个随机数,而rand(idum,1)是出现一列idum个随机变量; fortran里面的ran2(idum)运行结果就是一个数,而是,idum=6,和10答案都是0.6554?对fortran的ran2用法还不行, 请大家指点,谢谢。 FUNCTION ran2(idum) INTEGER, INTENT(OUT) :: idum REAL :: ran2 INTEGER, PARAMETER :: im1=2147483563 INTEGER, PARAMETER :: im2=2147483399 REAL, PARAMETER :: am=1./im1 INTEGER, PARAMETER :: imm1=im1-1 INTEGER, PARAMETER :: ia1=40014 INTEGER, PARAMETER :: ia2=40692 INTEGER, PARAMETER :: iq1=53668 INTEGER, PARAMETER :: iq2=52774 INTEGER, PARAMETER :: ir1=12211 INTEGER, PARAMETER :: ir2=3791 INTEGER, PARAMETER :: ntab=32 INTEGER, PARAMETER :: ndiv=1+imm1/ntab REAL, PARAMETER :: eps=1.2E-7 REAL, PARAMETER :: rnmx=1.-eps INTEGER :: idum2,j,k,iv(ntab),iy SAVE iv,iy,idum2 DATA idum2/123456789/, iv/ntab*0/, iy/0/ IF (idum <= 0) THEN idum=MAX(-idum,1) idum2=idum DO j=ntab+8,1,-1 k=idum/iq1 idum=ia1*(idum-k*iq1)-k*ir1 IF (idum < 0) idum=idum+im1 IF (j <= ntab) iv(j)=idum END DO iy=iv(1) END IF k=idum/iq1 idum=ia1*(idum-k*iq1)-k*ir1 IF (idum < 0) idum=idum+im1 k=idum2/iq2 idum2=ia2*(idum2-k*iq2)-k*ir2 IF (idum2 < 0) idum2=idum2+im2 j=1+iy/ndiv iy=iv(j)-idum2 iv(j)=idum IF(iy < 1)iy=iy+imm1 ran2=MIN(am*iy,rnmx) RETURN END FUNCTION ran2 |
» 猜你喜欢
参与限项
已经有3人回复
假如你的研究生提出不合理要求
已经有7人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求助计算机高人,编写个Fortran程序
已经有13人回复
请教一个fortran小程序编译出错的问题,谢谢
已经有9人回复
有关fortran的一次而问题,希望大家能帮帮忙,谢谢
已经有4人回复
写了一个fortran90的小程序,编译通不过,请大侠帮忙
已经有59人回复
【求助】如何写FORTRAN程序实现求平均最近邻距离
已经有34人回复
【求助】求指点,在Fortran里面,怎样实现“数组维度可调”的数组?
已经有5人回复
snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
2楼2012-03-25 00:07:47

3楼2012-03-25 08:54:51












回复此楼