已知,A<B和C<D,那么A<C,A<D,B<C,B<D成立的概率各是多少?
m文件代码如下:
function y=main()
alc=0;ald=0;blc=0;bld=0;cnt=0;
while cnt<=10000000
cnt=cnt+1;
a=rand();
b=rand();
c=rand();
d=rand();
if (a<b)&&(c<d)
if a<c
alc=alc+1;
end
if a<d
ald=ald+1;
end
if b<c
blc=blc+1;
end
if b<d
bld=bld+1;
end
else
cnt=cnt-1;continue;
end
end
ac=alc/cnt;
ad=ald/cnt;
bc=blc/cnt;
bd=bld/cnt;
fprintf('P(A<C)=%f\n',ac);
fprintf('P(A<D)=%f\n',ad);
fprintf('P(B<C)=%f\n',bc);
fprintf('P(B<D)=%f\n',bd);
end
运行结果如下:
main
P(A<C)=0.499930
P(A<D)=0.833332
P(B<C)=0.166729
P(B<D)=0.499998
最终可以求得:
P(A<C)=0.5, P(A<D)=5/6, P(B<C)=1/6, P(B<D)=0.5
蒙特卡洛使用大量重复实验以逼近结果的简单实验方法。取样次数越多,那么结论越可靠