24小时热门版块排行榜    

查看: 3589  |  回复: 14

贺仪

铁杆木虫 (著名写手)

[求助] fortran 随机数 每次运行都是一样的!

如题 fortran 随机数 每次运行都是一样的!
call random_seed ()
call random_number (rd);
由于计算的时间很短,运行起来每次还是一样的!
大家怎么忙解决?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

嘟啦啦嘟啦啦嘟
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

asaka

银虫 (初入文坛)

【答案】应助回帖


xzhdty(金币+1): 欢迎常来 2011-09-05 06:51:26
贺仪(金币+5): 多谢你的热心帮助 2011-09-05 19:42:30
你把
call random_seed ()
放在do循环外头!
6楼2011-09-05 02:44:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

贺仪(金币+5): 多谢你的热心帮助 2011-09-05 19:42:11
每次都一样是什么意思?同一个程序,每次运行结果当然应该是一样的啊……
2楼2011-09-04 14:56:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

引用回帖:
2楼: Originally posted by snoopyzhao at 2011-09-04 14:56:30:
每次都一样是什么意思?同一个程序,每次运行结果当然应该是一样的啊……

但我是个随机过程 就不应该一样的 。我用matlab得到的是不同的,但是用fortran得到的就是相同的。在取种子的时候seed取时间能不能精确到毫秒呢?要能到就可以了
嘟啦啦嘟啦啦嘟
3楼2011-09-04 15:07:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


xzhdty(金币+1): 欢迎常来程序语言看看 2011-09-05 06:52:00
引用回帖:
3楼: Originally posted by 贺仪 at 2011-09-04 15:07:58:
但我是个随机过程 就不应该一样的 。我用matlab得到的是不同的,但是用fortran得到的就是相同的。在取种子的时候seed取时间能不能精确到毫秒呢?要能到就可以了

你的意思是,你在程序中取了很多随机数,然后,随机数是一样的吗?

另外,种子与时间有啥关系?你以时间作种吗?

给段代码看看吧……
4楼2011-09-04 15:29:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

引用回帖:
4楼: Originally posted by snoopyzhao at 2011-09-04 15:29:13:
你的意思是,你在程序中取了很多随机数,然后,随机数是一样的吗?

另外,种子与时间有啥关系?你以时间作种吗?

给段代码看看吧……

你的意思是,你在程序中取了很多随机数,然后,随机数是一样的吗? 不是一样的的,是我想运行两次希望得到不同的结果 两次分别运行的到结果是一样的

另外,种子与时间有啥关系?你以时间作种吗?
本来想以时间做种,这样的话 运行两次得到的结果就是不一样的 但是时间太短了,得到的还是一样的,

给段代码看看吧……
      do jj=1,5000
         do i=1,100000
            call random_seed ()
           call random_number (rd)
                if (rd<=p(1)) THEN
                           …………………………
                     else if (rd<=p(2) .AND. rd>p(1)) THEN
                           …………………………
                     else if (rd<=p(3) .AND. rd>p(2)) THEN
                           …………………………
                     else if (rd<=p(4) .AND. rd>p(3)) THEN
                           …………………………                  
                     else if (rd<=p(5) .AND. rd>p(4)) THEN
                           …………………………
                     else
                           …………………………
            end if         
             end do
             std=tdx*tdx+tdy*tdy;
         write(10,130) tt,std;
         end do
嘟啦啦嘟啦啦嘟
5楼2011-09-04 15:58:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

引用回帖:
6楼: Originally posted by asaka at 2011-09-05 02:44:38:
你把
call random_seed ()
放在do循环外头!

也试过了,最前面也放过作用不大,后来只有让程序等一段时间再运行 有点时间差也就好了。不过好像与变量声明也有关系
real::rd

real rd
有什么区别呢?
后者是不可以,利用时间产生随机数的 加了call random_seed ()也没用。兄台知道的话,麻烦帮忙讲解一下,谢谢咯!
嘟啦啦嘟啦啦嘟
7楼2011-09-05 09:24:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

贺仪(金币+10): 多谢你的热心帮助 2011-09-05 19:42:40
引用回帖:
7楼: Originally posted by 贺仪 at 2011-09-05 09:24:07:
也试过了,最前面也放过作用不大,后来只有让程序等一段时间再运行 有点时间差也就好了。不过好像与变量声明也有关系
real::rd

real rd
有什么区别呢?
后者是不可以,利用时间产生随机数的 加了call  ...

real :: rd 和 real rd 在语法上是没有什么区别的,但属于两个不同的标准,后者是 Fortran 77 的变量声明方式,前者是 90 及以后的声明方式。建议不要混用,在某些情况下可能会出现一些问题……
8楼2011-09-05 11:01:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★
微尘、梦想(金币+2): 2011-09-07 12:04:14
参考一下下面的程序,后面那个子程序抄自 gfortran 的帮助文件。
CODE:
program test
   real :: r
   
!  call random_seed()
   call init_random_seed()
   
   do i=1,10
      call random_number(r)
      write(*,*) r
   end do
   
end program test

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 init_random_seed

9楼2011-09-05 21:42:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小子wx

铜虫 (小有名气)

楼主可以将时间作为随机数产生的种子,要不就是把上次产生的随机数当作下次产生的种子
用matlab时直接就是把系统时间作为产生随机数的种子的所以每次生成的数都不会一样
10楼2011-11-23 20:41:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 贺仪 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 范进中举一文的中心思想 +4 炎黄贵胄 2026-08-22 5/250 2026-08-24 02:09 by 流流伤
[基金申请] 让我中一个面上吧! +12 大萍1987 2026-08-20 15/750 2026-08-23 20:44 by 大萍1987
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +4 process2012 2026-08-23 5/250 2026-08-23 19:58 by jurkat.1640
[基金申请] 什么时候开奖? +9 CrisMessi 2026-08-18 10/500 2026-08-23 12:03 by 丶昵称占用
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[基金申请] 人气不行了 +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 14/700 2026-08-21 23:51 by cratir
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +16 医学老男孩 2026-08-20 20/1000 2026-08-21 21:13 by Ldrop2023
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 我面上完蛋了 +7 且听虎啸 2026-08-20 8/400 2026-08-21 12:31 by 酷酷墨镜
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见