请教 FORTRAN随机数问题,送100分

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:56:16
INTEGER N,N1,N2,N3,HE,XUHAO

DO N=0,999,1

N1=MOD(N/100,10)
N2=MOD(N/10,10)
N3=MOD(N,10)

XUHAO=0
HE=N1+N2+N3
IF(HE>18.AND.HE<35)THEN
XUHAO=XUHAO+1

(请问这里该怎么加?才能实现随机输出3个结果而不是所有结果?)

PRINT*,"(",XUHAO,")",N

ELSE
ENDIF

END DO

END

(先送50,结果正确我再送50分,谢谢)

INTEGER N,N1,N2,N3,HE,XUHAO
REAL SIG(3)
INTEGER M(3)

!产生3个随机数,0<=sig<1
CALL RANDOM_SEED()
CALL RANDOM_NUMBER(SIG)

!由于最后一共有166组符合要求的,故生成三个1-166之间的整形数
M=INT(166*SIG)+1

XUHAO=0 !看你这个初始化的位置写到循环里了 给你调出来了
DO N=0,999,1

N1=MOD(N/100,10)
N2=MOD(N/10,10)
N3=MOD(N,10)

HE=N1+N2+N3
IF(HE>18.AND.HE<35)THEN
XUHAO=XUHAO+1

!下面判断是否和3个随机数相等,并决定是否输出
IF(XUHAO==M(1).OR.XUHAO==M(2).OR.XUHAO==M(3))THEN
PRINT*,"(",XUHAO,")",N
END IF

ELSE
ENDIF

END DO

END