编写一个matlab程序,一个人写了n封信,又写了n个信封,随机把信放到信封里,求至少一封信放对的概率p
编写一个matlab程序,一个人写了n封信,又写了n个信封,随机把信放到信封里,求至少一封信放对的概率p
编写一个matlab程序,一个人写了n封信,又写了n个信封,随机把信放到信封里,求至少一封信放对的概率p
编写一个matlab程序,一个人写了n封信,又写了n个信封,随机把信放到信封里,求至少一封信放对的概率p
第一个问题的答案如下,第二个问题还是没有看明白你的要求,你最好把公式变成个图片插入进来,或者你看看能不能根据第一个问题的程序,自己尝试解决一下第二个问题,积分可以用求和来近似表示.
% 这段程序得到n=10时,对应的Pn
clear;
clc;
n=10
sum_right=0; %投递2000次中,至少有一封信投递正确的次数,初始值为零
for ii=1:2000
a1=1:n; %数组a1中依次存放的是n个信箱号,从1到n
[a,a2]=sort(rand(1,n));
%用随机数函数rand产生一个随机序列,然后从小到大排序,大小顺序号存放到数组a2中
num_right=sum(a1==a2);
%依次比较数组a1和a2中的每个元素,如果相同则为1,不同则为0,num_right中计算1的个数,即为投递正确的个数
if num_right>0 %如果num_right>0则说明至少有一封信投递正确了
sum_right=sum_right+1;
end
end
Pn=sum_right/2000 %得到Pn
% 这段程序得到n从2到50时,求出每个n对应的Pn,并绘制散点图
nn=2:50;
Pnn=zeros(1,length(nn));
for jj=1:length(nn)
n=nn(jj);
sum_right=0;
for ii=1:2000
a1=1:n;
[a,a2]=sort(rand(1,n));
num_right=sum(a1==a2);
if num_right>0
sum_right=sum_right+1;
end
end
Pnn(jj)=sum_right/2000;
end
figure
plot(nn,Pnn,'*')%绘制散点图
这是我得到的图片.由于是随机数,每次运行的结果可能不一样.追问第二个问题就是e的(X的平方)次方从0到1的积分以及sinx除以x的从0到1的积分,模拟4万次.这个我从没学过matlab,所以才求帮助啊,请这位大神帮帮忙~回答要是这样的话,第二题就比较简单了.
% 下面这段程序求解e的(x^2)次方在(0,1)的积分
clear;
clc;
sum_1=0;
for i=1:40000
x1=rand; %产生一个随机数
sum_1=sum_1+exp(x1^2);
end
result_1=sum_1/40000
%result_1即为e的(x^2)次方积分的结果,用40000个随机数的函数值的平均数来近似表示
% 下面这段程序求解sin(x)/x在(0,1)的积分
sum_2=0;
for i=1:40000
x2=rand;%产生一个随机数
sum_2=sum_2+sin(x2)/x2;
end
result_2=sum_2/40000
%result_2即为sin(x)/x积分的结果,用40000个随机数的函数值的平均数来近似表示