用c语言编程实现高斯分布,简单几行C语言代码实现高斯分布

本文介绍了如何使用C语言编程实现高斯分布。通过理论推导和MATLAB仿真验证,作者提供了C语言代码,该代码生成符合高斯分布的随机数。通过极坐标到笛卡尔坐标的转换,实现了高斯白噪声的模拟。
摘要由CSDN通过智能技术生成

由于项目需要产生一个高斯分布,所以去网上查找,结果很多,但是都没有足够的注释或者原理讲解,所以大部分代码都看不懂,也没法确定代码的结果是否正确。因此想从原理上来解决这个问题。具体的理论推导请看 http://blog.sina.com.cn/s/blog_9ce5a1b501018c1g.html。 我这里只是简单的提供我测试这个原理的代码以及测试结果。测试是用MATLAB仿真的:

clear all;clc

N=500000;

mu   =0;  %高斯均值

theda=1; %高斯方差

%产生两个均匀分布的0~1的随机序列

t1=rand(1,N);

t2=rand(1,N);

%极坐标的两个随机变量分布序列

a = 2*pi*t1;            %a是极坐标的角度:变成了0~2*pi的均匀分布

r = sqrt(-2*log(t2));   %r是极坐标的距离:

%用极坐标(a,r)转换成笛卡尔坐标(x,y),这里x,y都符合高斯分布

for i=1:N

x(i) = mu+sqrt(theda)*r(i)*cos(a(i));

y(i) = mu+sqrt(theda)*r(i)*sin(a(i));

end

x = 10*x;

mi = floor(min(x));

ma = ceil(max(x));

len= abs(mi)+abs(ma)+1;

array = zeros(1,len);

for i=1:N

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值