伪随机码详解

简介: 伪随机码详解

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。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.
目录
相关文章
|
1月前
|
机器学习/深度学习 算法 安全
随机性、熵与随机数生成器:解析伪随机数生成器(PRNG)和真随机数生成器(TRNG)
随机性在密码学、仿真和机器学习等领域中至关重要,本文探讨了随机性、熵的概念以及伪随机数生成器(PRNG)和真随机数生成器(TRNG)的原理和应用。PRNG通过算法生成看似随机的序列,适用于高效需求;TRNG利用物理过程生成真正随机数,适用于高安全需求。文章还讨论了两者的协同应用及其面临的挑战。
130 5
随机性、熵与随机数生成器:解析伪随机数生成器(PRNG)和真随机数生成器(TRNG)
|
19天前
|
存储 算法 安全
散列值获取原始信息暴力破解
散列值获取原始信息暴力破解
27 8
|
7月前
|
网络协议
伪头部校验
伪头部校验
163 6
|
6月前
|
设计模式 算法 程序员
伪随机数为什么叫伪随机数
伪随机数为什么叫伪随机数
72 1
|
存储 算法 编译器
产生一个随机数(伪随机)的一种方法(c语言)
计算机并不能产生真正的随机数,而是将已经编写好的一些无规则排列的数字存储在电脑里,把这些数字划分为若干相等的N份,并为每份加上一个编号,用srand()函数获取这个编号,然后rand()就按顺序获取这些数字,当srand()的参数值固定的时候,rand()获得的数也是固定的,所以一般srand的参数用time(NULL),因为系统的时间一直在变,所以rand()获得的数,也就一直在变,相当于是随机数了。只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。如果想在一个程序中生成随机数序列,需要至多在生成随机数之前设置一次随机种子。
197 0
|
算法 Java
【算法】缺失的第一个正数,俄罗斯套娃信封问题
1.缺失的第一个正数 2.俄罗斯套娃信封问题
117 10
|
算法 数据安全/隐私保护
马拉车算法 (最长回文串 例题 密码截获)
Manacher算法 manacher算法,我们习惯叫他 “马拉车”算法。 Manacher算法的应用范围比较狭窄,但是它的思想和拓展kmp算法有很多共通之处,所以在这里介绍一下。 Manacher算法是查找一个字符串的最长回文子串的线性算法。 在介绍算法之前,首先介绍一下什么是回文串,所谓回文串,简单来说就是正着读和反着读都是一样的字符串,比如abba,noon等等,一个字符串的最长回文子串即为这个字符串的子串中,是回文串的最长的那个。计算字符串的最长回文字串最简单的算法就是枚举该字符串的每一个子串,并且判断这个子串是否为回文串,这个算法的时间复杂度为O(n^3)的,显然无法令人满意,稍微优
214 0
马拉车算法 (最长回文串 例题 密码截获)
宿舍买饭随机数概率生成器
宿舍买饭随机数概率生成器
137 0
宿舍买饭随机数概率生成器
手机号码随机生成器
此功能的作用:我们工作中经常遇到一张表格里面有很多杂乱的文本,比如手机号码、座机号码、汉字、字母等混乱的文本在一起,但是我们只想要里面的手机号码,不要其他的文本,数量很大的时候,手动一个找挑出来复制粘贴,那简直是累死,那么我们的软件可以智能识别并提取里面的11位手机号码,也可以提取里面的扣扣号码,邮箱等。简直是解放双手的好工具。
手机号码随机生成器