24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3014  |  回复: 14
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

贺仪

铁杆木虫 (著名写手)

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

如题 fortran 随机数 每次运行都是一样的!
call random_seed ()
call random_number (rd);
由于计算的时间很短,运行起来每次还是一样的!
大家怎么忙解决?
回复此楼
嘟啦啦嘟啦啦嘟
已阅   回复此楼   关注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的回帖
查看全部 15 个回答

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

贺仪(金币+5): 多谢你的热心帮助 2011-09-05 19:42:11
每次都一样是什么意思?同一个程序,每次运行结果当然应该是一样的啊……
2楼2011-09-04 14:56:30
已阅   回复此楼   关注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的回帖
信息提示
请填处理意见