dvbbs
收藏本页
联系我们
论坛帮助
dvbbs

>> Fortran语言使用经验交流
搜一搜更多此类问题 
Fortran中文网Fortran中文网—Fortran语言经验交流Fortran语言使用经验交流 → 随机数的产生问题

您是本帖的第 4058 个阅读者
树形 打印
标题:
随机数的产生问题
topmad
帅哥哟,离线,有人找我吗?
等级:新手上路
文章:1
积分:262
门派:无门无派
注册:2010年11月7日
楼主
 用支付宝给topmad付款或购买其商品,支付宝交易免手续费、安全、快捷! 点击这里发送电子邮件给topmad

发贴心情
随机数的产生问题
各位高手,今天在论坛走了走,学了不少,有个问题需要询问看了各位的关于随机数的生成方式,有一些想法,好多随机数都是0-1范围内的,我想设定一个范围,比如1-30内的随机数,应该如何呢?想到过*10之类的操作,但是怕破坏了随机数的随机性,有没有办法生成规定范围内的规定类型的随机数的方法呢?
ip地址已设置保密
2010/11/7 14:16:52
yangzie
帅哥哟,离线,有人找我吗?
等级:新手上路
文章:3
积分:234
门派:无门无派
注册:2012年4月26日
2
 用支付宝给yangzie付款或购买其商品,支付宝交易免手续费、安全、快捷! 点击这里发送电子邮件给yangzie

发贴心情
INTEGER P(100),A,B

        N=100

       A=101

       B=200

       R=3.0

       CALL NRABS(R,A,B,N,P)

      WRITE(*,*)

       WRITE(*,10)

10    FORMAT(1X,'R:')

       WRITE(*,20)(P(I),I=1,N)

20    FORMAT(1X,10I6)

       WRITE(*,*)

       END

       SUBROUTINE NRABS(R,A,B,N,P)

       INTEGER A,B

       INTEGER P(N)

       S=B-A+1.0

       K=LOG(S-0.5)/LOG(2.0)+1

       L=1

       DO 30 I=1,K

30    L=2*L

       K=1

       S=4.0*L

       I=1

40    IF((I.LE.L).AND.(K.LE.N))THEN

       R=R+R+R+R+R

       M=R/S

       R=R-M*S

       J=A+R/4.0

       IF(J.LE.B)THEN

       P(K)=J

          K=K+1

       END IF

       I=I+1

       GOTO 40

       END IF

      RETURN

       END

      

这个是随机生成100个101到200的整数,R是种子值,R给的的值不同,生成的随机序列也不一样,可以看看,我就用这个~~~~

  

ip地址已设置保密
2012/4/26 17:13:38
yangzie
帅哥哟,离线,有人找我吗?
等级:新手上路
文章:3
积分:234
门派:无门无派
注册:2012年4月26日
3
 用支付宝给yangzie付款或购买其商品,支付宝交易免手续费、安全、快捷! 点击这里发送电子邮件给yangzie

发贴心情
INTEGER P(100),A,B

       OPEN (19,FILE='D:\TEMP1\OF19.DAT')

      N=100

       A=101

       B=200

       R=3.0

       CALL NRABS(R,A,B,N,P)

      WRITE(*,*)

       WRITE(*,10)

10    FORMAT(1X,'R:')

       WRITE(19,20)(P(I),I=1,N)

20    FORMAT(1X,10I6)

       WRITE(*,*)

       END

       SUBROUTINE NRABS(R,A,B,N,P)

       INTEGER A,B

       INTEGER P(N)

       S=B-A+1.0

       K=LOG(S-0.5)/LOG(2.0)+1

       L=1

       DO 30 I=1,K

30    L=2*L

       K=1

       S=4.0*L

       I=1

40    IF((I.LE.L).AND.(K.LE.N))THEN

       R=R+R+R+R+R

       M=R/S

       R=R-M*S

       J=A+R/4.0

       IF(J.LE.B)THEN

       P(K)=J

          K=K+1

       END IF

       I=I+1

       GOTO 40

       END IF

      RETURN

       END

      

  

ip地址已设置保密
2012/4/26 17:17:09

 3   3   1/1页      1    
网上贸易 创造奇迹! 阿里巴巴 Alibaba
Powered By Dvbbs Version 7.1.0 Sp1
Copyright ©2005 - 2008 www.fortran.cn
页面执行时间 0.07031 秒, 3 次数据查询
京ICP备05056801号