24小时热门版块排行榜    

查看: 633  |  回复: 3

totoymy

铜虫 (小有名气)

[求助] 内循环问题,求大虾帮忙

MODULE PARA
IMPLICIT NONE

INTEGER*4, PARAMETER:: Ndim=12   

REAL,DIMENSION(Ndim,5):: pp

INTEGER*4::NOUT

END MODULE PARA

PROGRAM CM
USE MSIMSL
USE PARA
IMPLICIT NONE

INTEGER:: i,j,k,m
INTEGER::t
real::x,y,z
REAL*8::r
REAL::s

OPEN (11, file='input.txt')

READ(11,*) ((pp(i,j),j=1,4),i=1,Ndim)
close(11)

t=1
DO while (t<=100)
call random_seed()
call random_number(r)

k=1
do while(k<=Ndim)
s=s+pp(k,4)
m=s-pp(k,4)

if (m    x=x+pp(k,1)
   y=y+pp(k,2)
   z=z+pp(k,3)
    open(12,file="result.txt",access='append')
    write(12,*) x,y,z,t,k,r
    close(12)  
end if
k=k+1
enddo

t=t+1
if (t>100) exit
enddo

ENDPROGRAM
大意就是生成100次随机数,并归属每一个随机数的范围,若属于某特定范围,则对其坐标进行累计加和。。求高手啊高手~~数值见附件,
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

ben_ladeng: 专家考核存档 2011-10-30 07:11:40
没有相应的库,不应助了……
2楼2011-10-28 16:41:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

totoymy

铜虫 (小有名气)

引用回帖:
1楼: Originally posted by totoymy at 2011-10-28 10:57:29:
MODULE PARA
IMPLICIT NONE

INTEGER*4, PARAMETER:: Ndim=12   

REAL,DIMENSION(Ndim,5):: pp

INTEGER*4::NOUT

END MODULE PARA

PROGRAM CM
USE MSIMSL
USE PARA
IMPLICIT NONE

INTEGER: ...

帮我说说问题也好。。。应该一共出100组数。。。结果总是不对啊~
3楼2011-10-30 12:53:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

★ ★
jjdg(金币+2): 辛苦了 2011-10-30 13:30:00
totoymy(金币+20): 貌似解决了~谢谢大虾,我是在别的文件基础上编的,所以那个库是原来用的。。没有用 2011-10-31 15:11:50
引用回帖:
3楼: Originally posted by totoymy at 2011-10-30 12:53:52:
帮我说说问题也好。。。应该一共出100组数。。。结果总是不对啊~

看了一下,你根本没有必要引用 MSIMSL 这个库。不知道你说的分组是啥个意思……

我改了一下,可以出来结果,但不见得是你想要的:
CODE:
MODULE PARA
IMPLICIT NONE

INTEGER*4, PARAMETER:: Ndim=12   

REAL,DIMENSION(Ndim,5):: pp

INTEGER*4::NOUT

END MODULE PARA

PROGRAM CM
!USE MSIMSL
USE PARA
IMPLICIT NONE

INTEGER:: i,j,k
INTEGER::t
real::x,y,z
REAL*8::r
REAL::s,m

OPEN (11, file='input.txt')

READ(11,*) ((pp(i,j),j=1,4),i=1,Ndim)
close(11)
   call random_seed()

t=1
DO
   call random_number(r)
!  write (*,*) r
   
   k=1
   s = 0.0
   do while(k<=Ndim)
      s=s+pp(k,4)
      m=s-pp(k,4)

!     write(*,*) s, m
      
      if (m           x=x+pp(k,1)
          y=y+pp(k,2)
          z=z+pp(k,3)
          open(12,file="result.txt",access='append')
          write(12,*) x,y,z,t,k,r
          close(12)  
          t = t + 1
      end if
      k=k+1
   enddo
   
   if (t>100) exit
enddo

end program cm

4楼2011-10-30 13:18:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 totoymy 的主题更新
信息提示
请填处理意见