大连理工大学概率上机作业(含答案).doc
概率论与数理统计上机报告
姓名:
学号:
院系:
班级:
一.某人写了n封信,又写了n个信封,然后将这n封信随机地装入n个信封中,用p(n)表示至少有一封信装对的概率。
1.编制程序,用随机数模拟至少20000次,求当n=10是,p(n)的值。
2.重复第一步,画出n=2,3,. . .,50时,p(n)的散点图。
解:
1.假设n封信是数组a[],n个信封是数组b[],将a[]数组随机的与b[]数组形成映射,若a[]的下脚标与b[]的下脚标相等则输出1,否则输出0,重复20000次,计算输出值的和,并除以20000,结果既为概率
运用C语言编程:
#include
#include
#include
main()
{
int a[10],b[10],i,j,index,cishu=0;
double percent;
srand((unsigned)time(0));
for(j=0;j<20000;j++)
{
for(i=0;i<10;i++)
a[i]=i;
i=0;
while(i<10)
{
index=rand()%10;
if(a[index]!=-1)
{
b[i]=a[index];
if(b[i]==i)
{
cishu++;
break;
}
a[index]=-1;
i++;
}
}
}
percent=(double)(cishu)/20000;
printf("%f\n",percent);
}
计算结果为
2.思路同1:
运用C语言编程:
#include
#include
#include
main()
{
int n;
for(n=2;n<50;n++)
{
int a[55],b[55],i,j,index,cishu=0;
double percent;
srand((unsigned)time(0));
for(j=0;j<20000;j++)
{
for(i=0;i
a[i]=i;
i=0;
while(i
{
index=rand()%n;
if(a[index]!=-1)
{
b[i]=a[index];
if(b[i]==i)
{
cishu++;
break;
}
a[index]=-1;
i++;
}
}
}
percent=(double)(cishu)/20000;
printf("%f\n",percent);
}
}
运算结果为:
0.496600 0.668400 0.630050 0.632700 0.633350
0.630050 0.631450 0.640400 0.630500 0.626700
0.636050 0.632700 0.623050 0.638350 0.627200
0.626750 0.633050 0.631250 0.633700 0.632400
0.632550 0.629900 0.634200 0.630050 0.630100
0.638900 0.631000 0.632450 0.631250 0.625600
0.631250 0.628750 0.633250 0.633450 0.643650
0.631400 0.631100 0.634800 0.631900 0.637400
0.632550 0.635100 0.636450 0.633850 0.634200
0.628900 0.630700 0.628650 0.636900
运用Excel作散点图:
二.设X1,X2,. . .,Xn相互独立且都服从区间[0,1]的均匀分布,f(x)为区间[0,1]上的一个可积数,由大数定律可知依概率收敛于,编制程序,用随机数模拟至少40000次,近似地求下列两个积分的值:
,
设1~10十个数,a[0]~a[9]是个数组,然后随机的赋值,从a[0]开始盘多,如果数组值与
组名对应的值相等则记1,否则记0,做20000次,最后用和除以20000,就得概率
解题思路:
取0~1内的随机数,赋值到x,在计算f(x),求4