欢迎来到天天文库
浏览记录
ID:35646807
大小:397.00 KB
页数:10页
时间:2019-04-06
《概率论与数理统计上机实习题目》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、概率论与数理统计上机实习题目一、某人写了n封信,又写了n个信封,然后将这n封信随机地装入这n个信封中,用Pn表示至少有一封信装对的概率。1.编制程序,用随机数模拟至少20000次,求当n=10时,Pn的值。2.重复第一步,画出n=2,3,…,50时,Pn的散点图。解:1.用C语言编程序。以1~10的从小到大的排列为这10个信封的位置储存在数组a[10]中,用C语言中的随机数生成函数生成一组10个无重复的1~10之间的数的随机序列储存在数组b[10]中。把数组b中的元素从b[0]到b[9]分别与a[0]到a[9]比较大小,若
2、比较到某一对元素相同则已可表示“至少有一封信装对”事件发生,停止本次试验并进行下一次试验,直至试验了20000次,用m来计算20000次试验中“至少有一封信装对”发生的次数。由程序运行的结果(见下图)可知n=10时Pn=0.628550程序代码如下:#include#include#includeintmain(){inti,j,k,m=0,a[10]={1,2,3,4,5,6,7,8,9,10},b[10];//a[10]代表10封信.b[10]是10个信封,随机生成
3、一组1~10的数.doublePn;time_tt;srand((unsigned)time(&t));//用来生成随机数.for(i=1;i<20001;i++)//进行20000次随机模拟;{printf("第%d次模拟试验中每封信的位置:",i);for(j=0;j<10;j++){b[j]=a[rand()%10];k=0;while(k4、f("%3d",b[j]);//打印出来可以方便检查错误.}printf("");for(j=0;j<10;j++){if(b[j]==a[j])//检查信与信封是否配对.{m+=1;//一次模拟中一旦有一封信放对了则m增加1,不必再检查下去.break;}elsecontinue;}}Pn=1.0*m/20000;printf("m=%d,Pn=%f",m,Pn);}2.求n为2~50的Pn与n=10时相同,只需把n=10修改成相应的数值即可。下表是n为2~50时的Pn值表:nPn20.50065030.65805、5040.62865050.62120060.63345070.62955080.63100090.627400100.628550110.627050120.636800130.641700140.624150150.629850160.628800170.627700180.637850190.629700200.629950210.633300220.631000230.629050240.626600250.631000260.631800270.634800280.626800290.632550300.63526、00310.633800320.635300330.637300340.628200350.634050360.632500370.627900380.628400390.632000400.636000410.630700420.630850430.630450440.637450450.630300460.632650470.626950480.628700490.630100500.636500由此表数据用Excel处理可得Pn的散点图如下:二、设X1,X2,…,Xn相互独立且都服从区间[0,1]上的均匀分布,为区间7、[0,1]上的一个可积函数由大数定律可知依概率收敛于=,编制程序,用随机数模拟至少40000次,近似地求下列两个积分的值:,解:1.用C语言编写程序。利用随机数函数模拟45000次,得到45000个0~1之间的数(即Xi),用sum把它们的的值全部加和,再除以45000就是平均值.程序代码如下:#include#include#include#includeintmain(){inti;doublex,sum=0,e=2.718281828;time_t8、t;srand((unsigned)time(&t));for(i=0;i<45000;i++){x=(rand()%1001)/1000.0;//将生成的0-1000的随机数除以1000便是精度为0.001的0-1之间的随机数.sum+=pow(e,x*x);//求45000个f(Xi)的和的值,再除
4、f("%3d",b[j]);//打印出来可以方便检查错误.}printf("");for(j=0;j<10;j++){if(b[j]==a[j])//检查信与信封是否配对.{m+=1;//一次模拟中一旦有一封信放对了则m增加1,不必再检查下去.break;}elsecontinue;}}Pn=1.0*m/20000;printf("m=%d,Pn=%f",m,Pn);}2.求n为2~50的Pn与n=10时相同,只需把n=10修改成相应的数值即可。下表是n为2~50时的Pn值表:nPn20.50065030.6580
5、5040.62865050.62120060.63345070.62955080.63100090.627400100.628550110.627050120.636800130.641700140.624150150.629850160.628800170.627700180.637850190.629700200.629950210.633300220.631000230.629050240.626600250.631000260.631800270.634800280.626800290.632550300.6352
6、00310.633800320.635300330.637300340.628200350.634050360.632500370.627900380.628400390.632000400.636000410.630700420.630850430.630450440.637450450.630300460.632650470.626950480.628700490.630100500.636500由此表数据用Excel处理可得Pn的散点图如下:二、设X1,X2,…,Xn相互独立且都服从区间[0,1]上的均匀分布,为区间
7、[0,1]上的一个可积函数由大数定律可知依概率收敛于=,编制程序,用随机数模拟至少40000次,近似地求下列两个积分的值:,解:1.用C语言编写程序。利用随机数函数模拟45000次,得到45000个0~1之间的数(即Xi),用sum把它们的的值全部加和,再除以45000就是平均值.程序代码如下:#include#include#include#includeintmain(){inti;doublex,sum=0,e=2.718281828;time_t
8、t;srand((unsigned)time(&t));for(i=0;i<45000;i++){x=(rand()%1001)/1000.0;//将生成的0-1000的随机数除以1000便是精度为0.001的0-1之间的随机数.sum+=pow(e,x*x);//求45000个f(Xi)的和的值,再除
此文档下载收益归作者所有