简单几行C语言代码实现高斯分布

由于项目需要产生一个高斯分布,所以去网上查找,结果很多,但是都没有足够的注释或者原理讲解,所以大部分代码都看不懂,也没法确定代码的结果是否正确。因此想从原理上来解决这个问题。具体的理论推导请看 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
    array(floor(x(i))-mi+1) = array(floor(x(i))-mi+1)+1;
end

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TFTP是一种简单的文件传输协议,它使用UDP协议进行数据传输。在实现TFTP协议层的c语言代码时,需要先了解TFTP的数据传输流程和协议规范。 TFTP的数据传输流程分为读模式和写模式。读模式是指客户端请求服务器从指定的文件中读取数据,写模式是指客户端向服务器写入数据到指定的文件中。在读模式下,客户端发送RRQ(读请求)报文给服务器,服务器则发送DATA(数据)报文和ACK(确认)报文给客户端。在写模式下,客户端发送WRQ(写请求)报文给服务器,服务器则发送ACK报文和DATA报文给客户端。 为实现TFTP协议层的c语言代码,我们需要了解TFTP的报文结构和协议规范。TFTP报文分为五种类型:RRQ、WRQ、DATA、ACK和ERROR。报文的数据格式如下: RRQ/WRQ报文格式: 2字节操作码(RRQ/WRQ) N字节文件名 1字节零 N字节传输模式(octet) DATA报文格式: 2字节操作码(DATA) 2字节块号 N字节数据 ACK报文格式: 2字节操作码(ACK) 2字节块号 ERROR报文格式: 2字节操作码(ERROR) 2字节错误码 N字节错误信息 1字节零 在实现TFTP协议层的c语言代码时,我们需要按照协议规范构造TFTP报文,并使用UDP协议进行报文的发送和接收。具体实现的步骤如下: 1. 创建socket对象,使用UDP协议进行数据传输。 2. 根据读模式或写模式构造RRQ/WRQ报文,并发送到服务器。 3. 接收服务器发回的DATA/ACK报文,并解析出数据块编号和数据内容。 4. 根据DATA/ACK报文的数据块编号,构造ACK/DATA报文,并发送回服务器。 5. 如果收到了ERROR报文,则需要解析出错误码和错误信息,并进行相应的处理。 通过以上步骤,我们可以实现TFTP协议层的c语言代码,从而实现文件的传输和下载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值