【源码】matlab编码和c语言实现产生高斯随机变量、瑞利变量(参数可调整)并画出归一化的直方图与理论的PDF曲线做对比,说明产生的变量的正确性

简要原理说明

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)=
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值