www.gusucode.com > matlab通信工程仿真源码(张德丰等编著)程序书籍 > matlab_code/matlab通信工程仿真源码(张德丰等编著)/第8章/gngauss.m

    function [g1,g2]=gngauss(m,sgma)
% 输入格式可以为[g1,g2]=gngauss(m,sgma)
% 或[g1,g2]=gngauss(sgma)
% 或[g1,g2]=gngauss
% 函数生成两个统计独立的高斯分布的随机数,以m为均值,sgma为方差
% 默认时m=0,sgma=1
if (nargin==0),
    m=0;sgma=1;
elseif nargin==1
    sgma=m;m=0;
end
u=rand;      %产生一个(0,1)间均匀分布的随机数u
z=sgma*(sqrt(2*log(1/(1-u)))); %利用上面的u产生一个瑞利分布随机数
u=rand;      %重新产生(0,1)间均匀分布的随机数u
g1=m+z*cos(2*pi*u);
g2=m+z*sin(2*pi*u);