clc;clear all;close all;
%运用直接抽样法产生指数分布、瑞利分布的随机变量序列
%%
% 运用直接抽样法产生指数分布的随机变量序列
% (1)使用直接抽取的方法 先产生 [0,1]间的随机数列
% (2) 利用累积分布函数的反函数,得到的结果就是符合指数分布的序列
N=10000; %产生随机数的个数
lambda=2; %参数λ
y=rand(1,N); %生成N个[0,1]间均匀分布随机数
x=-log(1-y)/lambda; %生成指数分布随机数
[n,xout]=hist(x,100); %分区间统计随机数出现概率
nn=n/N/mean(diff(xout));
figure;
bar(xout,nn,1);hold on; %画图验证随机数是否符合概率密度函数
plot([0 xout],lambda*exp(-lambda*([0 xout])),'r');
xlabel('x');ylabel('p(x)');title('直接抽样法产生指数分布的随机变量序列');
hold off;
%%
% 运用直接抽样法产生瑞利分布的随机变量序列
N=10000; %产生随机数的个数
y=rand(1,N); %生成N个[0,1]间均匀分布随机数
sigma=2;%参数sigma
z=sqrt(-2*sigma^2*log(1-y));%生成瑞利分布随机数
[m,zout]=hist(z,100);
mm=m/N/mean(diff(zout));
figure;
bar(zout,mm,1);
% hold on; %画图验证随机数是否符合概率密度函数
% plot([0 zout],([0 zout]*(1/sigma^2))*exp(-([0 zout])^2/(2*sigma^2)),'r');
xlabel('z');ylabel('p(z)');title('直接抽样法产生瑞利分布的随机变量序列');
hold off;