伪随机数的产生

1.2. 线性反馈移位寄存器

线性反馈移位寄存器(LFSR)是一个反馈移位寄存器。其反馈函数是寄存器中某些位的简单异或,这些位也称之为抽头序列。一个n位的LFSR能够在重复之前产生2^n-1位长的伪随机序列。只有具有一定抽头序列的LFSR才能通过所有2^n-1个内部状态,产生2^n - 1位长的伪随机序列,这个输出的序列就称之为m序列。

┌─┬─┬─┬─┬─┬─┬─┬─┐

┌─→┤ │ │  │ │ │  │ │ ├──→

│   └─┴─┴─┴─┴─┴─┴─┴─┘

|          \  |  /

└───────←⊙←─

为了使LFSR成为最大周期的LFSR,由抽头序列加上常数1形成的多项式必须是本原多项式模2。多项式的阶即移位寄存器的长度。一个n阶本原多项式是不可约多项式,它能整除x^(2*n-1)+1而不能整除x^d+1,其中d能整除2^n-1。例如(32,7,5,3,2,1,0)是指下面本原多项式模2:

x^32+x^7+x^5+x^3+x^2+x+1

把它转化为最大周期LFSR就是在LFSR小邓第32,7,5,2,1位抽头。更多的本原多项式模2

利用上述两种方法产生周期为m的伪随机序列后 ,只需要将产生的伪随机序列除以序列的周期,就可以得到(0,1)上均匀分布的伪随机序列了。

-------------------------------------------------------------------------

function x = rndgenm(n,options)

%RNDGENM  Uniformly distributed random numbers generator.

%       X = rndgenm(N,OPTIONS)

%   where N is number of random variates needed, and OPTIONS give a

%   tap sequence for Linear Feedback Shift Register (LFSR).A default

%   choose of OPTIONS is [32,7,5,3,2,1,0].

%

%   RNDGENM produces pseudo-random numbers.  The sequence of numbers

%   generated is determined by the state of the generator. RNDGENM use

%   Linear Feedback Shift Register (LFSR) to generate a m-sequence.

%

% See also RAND, RNDGEN

%---------------------------------------------------------------------------

% xywu

% Fudan university.

%

% $Revision: 1.0 $

% $Date: 03/08/2002 $

%

%---------------------------------------------------------------------------

if nargin>2

error('Too many arguments! ');

end

if nargin<1

error('Requires at least one input argument.');

end

if nargin==1

options = [32,7,5,3,2,1,0];

end

options = options(find(options>0));

Len = max(options);

if Len>51 | Len<1

error('Tap sequence should be more than 1 and less than 51.');

end

x = [];

MAXVAL = 2^Len-1;

Register = 0;

while Register==0

Register = fix(rand(1)*MAXVAL);

end

for i = 1:n

Feedback = 0;

for j = 1:length(options)

Feedback = bitget(Register,options(j))+Feedback;

end

Register = bitshift(Register,-1);

Register = bitset(Register,Len,bitget(Feedback,1));

x(i) = Register/MAXVAL;

end

m伪随机码的产生matlab,伪随机数的产生相关推荐

  1. 伪随机数matlab,伪随机数与matlab随机数

    转自http://hi.baidu.com/yanshanedu/item/0432e4d2deac9543ddf9bee0 伪随机数与matlab随机数 要说matlab的随机函数,就得先说说伪随机 ...

  2. matlab伪随机数(以及如何得到真正的随机数)

    一.问题探究 众所周知,Matlab中的rand()函数产生的是伪随机数,但一般用来也可以接受.但是,如果我们知道伪随机数的初始状态,那么产生的伪随机数是唯一确定的.问题来了,Matlab每次启动会重 ...

  3. matlab——伪随机数生成

    rand(m) 用于生成m行m列均匀分布在(0,1)之间的伪随机数 实现 >> rand(5)ans =0.8147 0.0975 0.1576 0.1419 0.65570.9058 0 ...

  4. 用matlab生成跳频信号,用MATLAB实现一种快跳频通信系统

    内容简介: 毕业论文 用MATLAB实现一种快跳频通信系统,附答辩文稿.程序与框图.英文资料及翻译,正文共41页,20495字. 摘 要 快跳频通信是扩频通信的一种实现方式,它有很多的特点和有点,尤其 ...

  5. matlab随机数的设计及应用,matlab随机数的应用

    随机数.: 十七.Weibull 随机数 R = weibrnd(A,B) R = weibrnd(A,B,m) R = weibrnd(A,B,m,n) Matlab 随机数 小结 1,rand 生 ...

  6. 使用MATLAB生成任何需要的伪随机码(PN码)

    目录 一. 引言 二. 用matlab生成伪随机序列 一. 引言 伪随机码(PN码),只包含0和1,是一种人为随机创造的随机序列.应用范围广,通信中经常使用到,比如伪码测距等.为了验证所给的生成函数是 ...

  7. 伪随机数与matlab随机数

    转自http://hi.baidu.com/yanshanedu/item/0432e4d2deac9543ddf9bee0 伪随机数与matlab随机数 要说matlab的随机函数,就得先说说伪随机 ...

  8. 真随机数和伪随机数以及伪随机数的MATLAB实现

    1 真随机数 真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的.使用物理性随机数发生器生成的真随机数,可以说是完美再现了生活中 ...

  9. matlab伪随机码,Matlab生成M序列的伪随机码

    图3.5 线性反馈移位寄存器 MATLAB生成M序列伪随机码函数如下: % 在MATLAB命令窗口输入以下: % fbconnection=[0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 ...

最新文章

  1. 从0到1,苏宁API网关的演进之路
  2. 经典算法——堆排序笔试题
  3. linux snmp进程,linux snmpwalk命令详解
  4. awk -f 分隔符 命令_千面 awk
  5. python安装Scrapy踩过的坑以及安装指导
  6. python传文件给java_用java pyhont通过HTTP协议传输文件流
  7. .net里鼠标选中的text数据怎么获取_数据快速对比,这个快捷键你都不会,难怪要加班...
  8. C++ 类对象和 指针的区别
  9. 使用 Ajax 调用 SOAP Web 服务,第 1 部分: 构建 Web 服务客户机
  10. linux bash学习(一)
  11. 锋利Jquery 第一天
  12. python编写计算方差的函数_基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解...
  13. centos7.9安装zabbix+添加局域网下其他客户机
  14. html body language,关于BODY LANGUAGE
  15. 2021清华本科特奖答辩现场:有人用AI识别甲骨文!有人研究6G!奥运冠军:走下领奖台一切归零...
  16. 整数分解 费马方法c语言,因数分解(费马的方法)
  17. unsigned long long类型与long long类型
  18. Python一些可能用的到的函数系列37flipflop 对象
  19. 会议签到web_GitHub - dzhgb/EasyMeeting_Web: [ThinkPHP5] 智能会议室Web端:账号管理、会议室设置、用户预约、在线签到...
  20. Putty的噩梦——渗透工具PuttyRider使用心得分享

热门文章

  1. 大航海时代:葡萄牙、西班牙率先出发,英国为何成为最大赢家?
  2. 分布式数据库实战第六节 数据库中间件的研究
  3. 解读经典《C#高级编程》第七版 Page79-93.对象和类型.Chapter3
  4. java springBoot实现QQ机器人,定时发送信息,自动回复功能
  5. 传B站35岁女副总裁嫁24岁男主播!资产80亿,任职45家企业
  6. VC++的DDX/DDV机制
  7. 哪一类功率放大电路效率最高_直流电机驱动电路设计,细,全!
  8. Chrome浏览器性能对比测试报告
  9. 肖博高中数学一对一补习高考数学强化直线与圆 题型总结|附带详细解析
  10. NOI- 1.5编程基础之循环控制(不完整)