伪随机码详解

简介: 伪随机码详解

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。

伪随机码

伪随机序列的概念

伪随机序列应当具有类似随机序列的性质。在工程上常用二元 {0,1} 序列来产生伪随机(噪声)码, 它具有以下几个特点:

  • 在随机序列的每一个周期内 0 和 1 出现的次数近似相等。
  • 每一周期内, 长度为 $\boldsymbol{n}$ 的游程取值(相同码元的码元串)出现的次数比长度为 n+1 的游程次数多一倍。
  • 随机序列的自相关类似于白噪声自相关函数的性质。

对伪随机码定义可写为

(1)凡自相关函数具有

$$ \rho_{x}(j)=\{\begin{array}{l} \sum_{i=1}^{n} \frac{x_{i}^{2}}{p}=1, \quad j=0 \\ \sum_{i=1}^{n} \frac{x_{i} x_{i+j}}{p}=-\frac{1}{p}, j \neq 0 \end{array}. $$

形式的码, 称为伪随机码, 又称为狭义伪随机码。

(2) 凡自相关函数具有

$$ \rho_{x}(j)=\{\begin{array}{ll} \sum_{i=1}^{n} x_{i}^{2} / p=1 & j=0 \\ \sum_{i=1}^{n} x_{i} x_{i+j} / p=a<1 & j \neq 0 \end{array}. $$

形式的码, 称为广义伪随机码。狭义伪随机码是广义伪随机码的特例。

伪随机序列的产生

可以用移位奇存器作为伪随机码产生器, 图1是一个4级移位寄存 器, 用它就可产生伪随机序列。图1中的反馈逻辑为

$$ a_{n}=a_{n-3} \oplus a_{n-4} $$

在这里插入图片描述

当移位寄存器的初始状态是 $a_{n-4}=1$, $a_{n-3}=0$, $a_{n-2}=0$, $a_{n-1}=0$ , 经过一 个时钟节拍后, 各级状态自左向右移到下一级, 末级输出一位数, 与此同时模二加法器输出加到移位寄存器第一级, 从而形成移位 寄存器的新状态, 下一个时钟节拍到来又继续上述过程, 末级输出序列就是伪随机序列。在这种条件下, 产生的伪随机序列是

这是一个周期长度p=15的伪随机序列。

当上图的初始状态是 0 状态时, 即 $a_{n-4}=a_{n-3}=a_{n-2}=a_{n-1}=0$ 移存器的输 出是一个0序列。

4 级移存器共有 16 个状态, 除去一个 0 状态外, 还有 15 个状态。 对于图1来说, 只要随机序列的周期达到最大值, 这时无论如何 改变移存器的初始状态, 其输出只改变序列的初相, 序列的排 序规律不会改变。

但如果改变图四级移存器的反馈逻辑, 其输出序列就会发生变化。

下图中的反馈逻辑是 $a_{n}=a_{n-2} \oplus a_{n-4}$ , 初始状态为 1111, 输出序列为111100111100111...

在这里插入图片描述

反馈逻辑是 $a_{n}=a_{n-2} \oplus a_{n-4}$ , 时, 给定不同的初始状态1111、 0001 、 1011 , 可以得到三个完全不同的输出序列 111100111100.., 000101000101..,101101101101。它们的周期分别是6、6和3。

由此, 我们可以得出以下几点结论:

(1)线性移位寄存器的输出序列是一个周期序列。

(2)当初始状态是0状态时, 线性移位寄存器的输出是一个0序列。

(3)级数相同的线性移位寄存器的输出序列与寄存器的反馈逻辑有关。

(4)序列周期 $p^{<}<\mathbf{2}^{n}-1$ (n级线性移位寄存器) 的同一个线性移存器的输 出还与起始状态有关。

(5) 序列周期 $p^{n}=2^{n}-1$ 的线性移位寄存器, 改变移位寄存起初始状态 只改变序列的起始相位, 而周期序列排序规律不变。

参考文献:

  1. Proakis, John G., et al. Communication systems engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  2. Proakis, John G., et al. SOLUTIONS MANUAL Communication Systems Engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  3. 周炯槃. 通信原理(第3版)[M]. 北京:北京邮电大学出版社, 2008.
  4. 樊昌信, 曹丽娜. 通信原理(第7版) [M]. 北京:国防工业出版社, 2012.
目录
相关文章
|
6月前
|
网络协议
伪头部校验
伪头部校验
127 6
|
2月前
after伪对象
after伪对象
34 5
|
5月前
|
设计模式 算法 程序员
伪随机数为什么叫伪随机数
伪随机数为什么叫伪随机数
64 1
|
存储 算法 编译器
产生一个随机数(伪随机)的一种方法(c语言)
计算机并不能产生真正的随机数,而是将已经编写好的一些无规则排列的数字存储在电脑里,把这些数字划分为若干相等的N份,并为每份加上一个编号,用srand()函数获取这个编号,然后rand()就按顺序获取这些数字,当srand()的参数值固定的时候,rand()获得的数也是固定的,所以一般srand的参数用time(NULL),因为系统的时间一直在变,所以rand()获得的数,也就一直在变,相当于是随机数了。只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。如果想在一个程序中生成随机数序列,需要至多在生成随机数之前设置一次随机种子。
180 0
|
PHP 开发者
伪类型|学习笔记
快速学习伪类型
伪类型|学习笔记
手机号码随机生成器
此功能的作用:我们工作中经常遇到一张表格里面有很多杂乱的文本,比如手机号码、座机号码、汉字、字母等混乱的文本在一起,但是我们只想要里面的手机号码,不要其他的文本,数量很大的时候,手动一个找挑出来复制粘贴,那简直是累死,那么我们的软件可以智能识别并提取里面的11位手机号码,也可以提取里面的扣扣号码,邮箱等。简直是解放双手的好工具。
手机号码随机生成器
|
算法 Serverless 数据安全/隐私保护
【密码学】一文读懂基于散列函数的伪随机数生成器
上回说到,小明制作了一个特殊的日记本,在每次输入正确的密码之后,都会随机的生成下一个密码,但是呢,由于小明设计随机数算法选的不太好,这让小红给钻了空子,这时候小明心里别提多伤感了,这。。。这我的日记不就相当于直接公开了吗,这是要社死的节奏啊,不行不行,我要换一个新的方法,这时候,小明刚好学完了密码学当中的散列函数,心想,这我要是直接用散列函数的输出作为随机密码的生成,这不就成了,哈哈,这时候小明心里别提有多美了,于是乎,小明设计出了如下的随机数生成算法。
【密码学】一文读懂基于散列函数的伪随机数生成器