蒙特卡洛法MATLAB

%%unifrnd函数的使用
%unifrnd函数可以创建随机的连续均匀分布的数组,一般式为R=unifrnd(A,B);
%A和B是标量或者相同维数的行向量或者列向量。R=unifrnd(A,B,[m,n])表示生成m*n的
%矩阵,他们的数值在A,B之间,看下面例子
%例1 若A,B都是标量
R=unifrnd(3,4);%运行结果为3到4之间的一个随机数
%例2 若A是标量,B是一维行向量
R=unifrnd(3,[1,2,3,4,5,6,7]);%运行结果为:
% R=  NaN       NaN    3.0000    3.4868    3.1809    5.1349    5.0288
%其中NaN表示not a number ,这时候在区间[3,1],[3,2],[3,3],[3,4],[3,5],[3,6]
%[3,7]分别单独生成一个随机数
%例3 若A,B,都是同维行向量
R=unifrnd([1,3,6],[2,5,7]);%运行结果为ans= 1.6327    3.3636    6.0785
%结果是在区间[1,2],[3,5],[6,7]各生成一个随机数,这也是A,B要同维数原因
%再来说说R=unifrnd(A,B,n)和R=ubifrnd(A,B,[n,m]),在此讨论A,和B是常量的情况
R=unifrnd(1,3,4);%运行结果如下
% R=
%    1.0925    1.8573    1.4108    2.6969
%    2.9364    1.7689    2.5001    1.6632
%    2.5966    2.0255    2.3338    2.0363
%    2.4108    1.3090    2.2723    1.6110
%上面生成的是数值在区间[1,3]的4*4方阵,即R=unifrnd(A,B,n)生成的是一个数值在
%区间[A,B]之间的n*n的随机矩阵
R=unifrnd(1,3,[2,3]);%运行结果是
% R=
%   1.5391    1.7028    1.3373
%   1.7263    2.5547    2.1727
%上面生成的是数值在区间[1,3]之间的2*3的数字随机矩阵。即R=unifrnd(A,B,[m,n])
%生成的是数值在区间[A,B]的随机矩阵
%%
%看以下实际题目:用MATLAB计算y=x^3,y=12-x与x轴围成的面积
%用随机试验的方法来做,在矩形区域[0,12]*[0,9]上产生10^7个随机点,统计这些点落在
%曲边三角形中的频数,则可以计算出曲边三角形面积
x=unifrnd(0,12,[1,10000000]);
y=unifrnd(0,9,[1,10000000]);
pinshu_=sum((y<x.^2&x<3)|(y<12-x&x>3));
area=12*9*pinshu_/10000000;
%得到的结果 area=49.5036

  

原文地址:https://www.cnblogs.com/td15980891505/p/5433237.html