- 注册时间
- 2007-12-27
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 2608
- 在线时间
- 小时
|
发表于 2013-2-19 15:45:40
|
显示全部楼层
又弄了一个10^8的豆的,感觉上需要验证随机数的可靠性和考虑double的误差积累了。所以请Fans也有空算一下权重p的极小值吧。呵呵。
源码如下,我用vc2005:- #include "stdafx.h"
- #include <conio.h>
- #include <stdlib.h>
- #include <time.h>
- typedef double F;
- int _tmain(int argc, _TCHAR* argv[])
- {
- FILE *fp;
- long i,j,n;
- F w,t,s1,s2,k,x1,x2;
- srand((unsigned)time(NULL));
- fopen_s(&fp,"d:\\chidou.txt","w");fprintf(fp,"s={");
- n=100000000L;
- for(k=0.0;k<2.01;k+=0.1){
- for(j=0;j<10L;j++){
- w=0.5;t=0.0;s1=(F)rand()/RAND_MAX;
- for(i=0;i<n;i++){s2=(F)rand()/RAND_MAX;
- if(s1<s2){x1=s1;x1=s1;x2=s2;}else{x1=s2;x2=s1;}
- if(w<(x1+x2+k/2.0)/(k+2.0)){t+=(w>x1)?w-x1:x1-w;w=x1;s1=x2;}else{t+=(w>x2)?w-x2:x2-w;w=x2;s1=x1;}}
- printf("j=%3d; k=%f; t=%f\n",j,k,t/n);fprintf(fp,"%f,",t/n);}}fprintf(fp,"0};");
- return 0;
- }
复制代码 M画图代码:- <<"d:\\chidou.txt"
- ss=Transpose[Map[{Mean[#],Max[#],Min[#]}&,Partition[Most[s],{10}]]];ss//First
- ListPlot[Map[Transpose[{Range[0,2,1/10],#}]&,ss],Filling->{1->{2},1->{3}},Joined->True]
复制代码 结果如下,权重p为0到2,0.1步长,结果是吃豆的期望时长:
{0.220413,0.219784,0.219428,0.219236,0.219167,0.219171,0.21924,0.219331,0.219458,0.219596,0.219753,0.219908,0.220075,0.220245,0.220406,0.220575,0.220731,0.220894,0.221046,0.221204,0.221347}
|
评分
-
查看全部评分
|