Fortran Coder

查看: 11178|回复: 4
打印 上一主题 下一主题

[数值问题] 请教,随机数的问题

[复制链接]

8

帖子

4

主题

0

精华

入门

F 币
41 元
贡献
25 点
跳转到指定楼层
楼主
发表于 2014-3-24 12:09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不用写出程序,只求指出我的程序哪里出错了,谢谢啊
1.我要建一个模型,100元素的一维数组设为S,每个元素非1即-1.随机数判断产生。计算相邻的乘积值的负值首尾也算相邻-S(1)*S(100)设为M

2.再从1到一百取随机一个数J提出S(J),取S(J)=-S(J),计算M2,再随机取一个数X判断,如果X小于EXP(M2-M),就不改S(J)了,反之,S(J)=-S(J)(意思就是再改回来),然后M=M2(与下一个M2进行比较),再输出M的值保存

3.第二步进行10000步

结果每次都是90.00000000什么的,数据里全是这个,我吧第二步进行十次,数据一点也没变,求助大家我程序哪里出错了?谢谢大家,感激不尽啊

Text1.f90

671 Bytes, 下载次数: 9

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2014-3-24 12:42:31 | 只看该作者
1.随机数需要种子。建议你加上
2.再随机取一个数X判断,如果X小于EXP(M2-M)这句话里的 X 是随机数,还是 S(随机数) ?你的代码貌似直接取了 Z 来判断。

736

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
700 元
贡献
359 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

板凳
发表于 2014-3-24 13:00:04 | 只看该作者
本帖最后由 chuxf 于 2014-3-24 13:04 编辑

我写了个版本,看是否是你需要的。

[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None
  Integer , parameter :: DP = Kind(0.0D0)
  Integer :: s( 100 )
  integer :: i , k , l
  Real( Kind = DP ) :: m1 , x , y , z , m2
  open (365,file='data.dat')
  call random_seed()
  do i=1,size(s)
    call random_number(x)
    if (x.le.0.5) then
      s(i)=1
    else
      s(i)=-1
    end if
  end do
  m1 = CalcM( S )
  Do k = 1 , 10000
    call random_number(y)
    l=1+aint(100*y)
    s(l)=-s(l)
    m2 = CalcM( S )
    call random_number(z)
    i=1+aint(100*z)
    if (s(i) < exp(m2-m1)) s(l)=-s(l)
    m1=m2
    write(365,*) m1
  end do
  
contains

  Real( Kind = DP ) Function CalcM( s )
    Integer :: s(:)
    integer :: j , n
    n = size( s )
    CalcM = -1.0_DP * s(1) * s(n)
    Do j = 1 , n - 1
      CalcM = CalcM - s(j) * s(j+1)
    end do
  End Function CalcM

End Program www_fcode_cn

8

帖子

4

主题

0

精华

入门

F 币
41 元
贡献
25 点
地板
 楼主| 发表于 2014-3-24 20:09:09 | 只看该作者
fcode 发表于 2014-3-24 12:42
1.随机数需要种子。建议你加上
2.再随机取一个数X判断,如果X小于EXP(M2-M)这句话里的 X 是随机数,还是  ...

是的,就是单纯的随机数,谢谢你啊

8

帖子

4

主题

0

精华

入门

F 币
41 元
贡献
25 点
5#
 楼主| 发表于 2014-3-24 20:10:50 | 只看该作者
chuxf 发表于 2014-3-24 13:00
我写了个版本,看是否是你需要的。

[mw_shl_code=fortran,true]Program www_fcode_cn

还是谢谢你啊!我可以参考看看,您真是好心人嘞!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-23 22:21

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表