24小时热门版块排行榜    

查看: 416  |  回复: 0

zyj8119

木虫 (著名写手)

[交流] 【转帖】用fortran编的投针问题的小程序

蒲丰氏投针问题的模拟过程,随机数发生器也是自编的,以供大家参考和提出建议。谢谢。(seed1和seed2最好选择3和5,为了使投针次数达到1000000,CVF进行如下设置Project->settings->link->
output,将stack allocations reserve:设为1000000000) 
CODE:
       program getpi  
      implicit none
      real,parameter::a=5,L=4,pi=3.14159   
      integer::n1,i,counter=0  
      real,allocatable::R1(:),R2(:)
      real::theta,x,pi1
      write(*,*) 'input the size of the array:'  
      read(*,*) n1
      allocate(R1(n1))
      allocate(R2(n1))   
      call random(n1,R1,R2)
      do i=1,n1
       x=a*(2*R1(i)-1)
       theta=pi*R2(i)  
      if(abs(x)       end do
      pi1=(1.0*n1)/(counter*1.0)*(2.0*L/a)
      write(*,*) 'this is PI:'   
      write(*,*) pi
      write(*,"('this is ratio of counter to total number',F10.6)") 1.0
     &*counter/n1
      stop   
      end program  
  
      subroutine random(n,R1,R2)
      implicit none  
      integer n,seed1,seed2,i,little,m
      real::R1(n),R2(n)  
      integer::temp1(n),temp2(n)
      write(*,*) 'input seed1'  
      read(*,*) seed1  
      write(*,*) 'input seed2'
      read(*,*) seed2  
      m=2**30   
      m=m*2-1   
      temp1(1)=397204094  
      temp2(1)=temp1(1)  
      R1(1)=(1.0*temp1(1))/(1.0*m)   
      R2(1)=(1.0*temp2(1))/(1.0*m)
      little=0
      if(R1(1)<0.5) little=little+1  
      do i=1,n-1
      temp1(i+1)=mod(seed1*temp1(i),m)  
      R1(i+1)=(1.0*temp1(i+1))/(1.0*m)
      temp2(i+1)=mod(seed2*temp2(i),m)  
      R2(i+1)=(1.0*temp2(i+1))/(1.0*m)
      if(R1(i+1)<0.5) little=little+1 .  
      end do ;
      write(*,*) 'ratio of number which is little than 0.5'  
      write(*,*) 1.0*little/n
      return
      end subroutine

[ Last edited by zyj8119 on 2010-11-12 at 16:09 ]
回复此楼

» 猜你喜欢

好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 29号明天会评吗 +4 笨笨唐 2026-08-28 4/200 2026-08-31 09:30 by huixian257
[基金申请] 能否申诉? +6 echo8914667 2026-08-30 7/350 2026-08-31 08:41 by kingkocxr
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-08-31 08:28 by xiangy672
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[考博] 找导师 +6 yuanjiabao 2026-08-29 7/350 2026-08-30 14:40 by 生科新手
[基金申请] 系统查不到 +11 董八千 2026-08-26 11/550 2026-08-28 18:06 by Leogzhya
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +5 yuleib84 2026-08-26 6/300 2026-08-28 00:02 by yudaoqian88
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[基金申请] 基金未中,这种答复是模板吗? +5 zhaosm1982 2026-08-27 6/300 2026-08-27 16:00 by lfy8008
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
信息提示
请填处理意见