简要原理说明
matlab提供rand()函数,默认是产生在区间(0,1)上均匀分布的随机变量,根据相关的研究可知任何随机变量均可以通过(0,1)上的均匀分布变量通过一定的变换得来,这里我们直接给出相关的结论不做证明。
- 假设U为服从区间(0,1)上均匀分布的变量,U(i){i=1,2,3…}为之间独立同分布(IID)。
- 那么由12个独立同分布(IID)的U变量即可获得一个标准高斯分布的变量,如下图
- 通过两个独立同分布的标准高斯分布变量又可以得到一个瑞利分布的变量如下图,可以看到需要先产生N(0,a2)(a2指方差后边类似懒得去搞出来那个符号将就看),学过概率统计知道任意Y-N(a,b2)可以由X~N(0,1)得到,即Y=a+bX
matlab代码及注释
- 产生的是高斯分布N(0,1),N(0,4.26),N(-2.5,1),瑞利分布R(1)、R(0.36)、R(3.4)需要产生其它的只需要稍微修改代码里面的参数就可以.
clc;clear;
N=1000000;%产生1000000个值
%% 产生12个独立同分布的均匀分布的随机变量
for i=1:1:N
r1(i)=rand();
end
for i=1:1:N
r2(i)=rand();
end
for i=1:1:N
r3(i)=rand();
end
for i=1:1:N
r4(i)=rand();
end
for i=1:1:N
r5(i)=rand();
end
for i=1:1:N
r6(i)=rand();
end
for i=1:1:N
r7(i)=rand();
end
for i=1:1:N
r8(i)=rand();
end
for i=1:1:N
r9(i)=rand();
end
for i=1:1:N
r10(i)=rand();
end
for i=1:1:N
r11(i)=rand();
end
for i=1:1:N
r12(i)=rand();
end
%% 产生12个独立同分布的均匀分布的随机变量
for i=1:1:N
m1(i)=rand();
end
for i=1:1:N
m2(i)=rand();
end
for i=1:1:N
m3(i)=rand();
end
for i=1:1:N
m4(i)=rand();
end
for i=1:1:N
m5(i)=rand();
end
for i=1:1:N
m6(i)=