伪随机序列生成器的构造

合集下载

伪随机码生成器

伪随机码生成器

M序列发生器M序列是最常用的一种伪随机序列,是一种线性反馈移位寄存器序列的简称。

带线性反馈逻辑的移位寄存器设定各级寄存器的初试状态后,在时钟的触发下,每次移位后各级寄存器状态都会发生变化。

其中一级寄存器(通常为末级)的输出,随着移位寄存器时钟节拍的推移会产生下一个序列,称为移位寄存器序列。

他是一种周期序列,周期与移位寄存器的级数和反馈逻辑有关。

以4级移位寄存器为例,线性反馈结构如下图:4级以为寄存器反馈图其中a4=a1+a0信号a4:a0禁止出现全0,否则将会出现全0,序列不变化。

实验仿真Code:library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity random_4 isPort ( clk : in STD_LOGIC;reset : in STD_LOGIC;din : in STD_LOGIC_VECTOR (3 downto 0);dout : out STD_LOGIC_VECTOR (3 downto 0);load : in STD_LOGIC);end random_4;architecture Behavioral of random_4 issignal rfsr :std_logic_vector(3 downto 0);--signal temp:std_logic;beginprocess(clk,reset,load,din)beginif (reset ='1') thenrfsr <=(others =>'0');elsif (clk' event and clk='1') thenif(load ='1') then ----load =1rfsr<= din;elserfsr(3) <= rfsr(0) xor rfsr(1);rfsr(2 downto 0) <= rfsr(3 downto 1);end if;end if;end process;------signal rename----dout <= rfsr;end Behavioral;testbench:LIBRARY ieee;USE ieee.std_logic_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--USE ieee.numeric_std.ALL;ENTITY random_testbench ISEND random_testbench;ARCHITECTURE behavior OF random_testbench IS-- Component Declaration for the Unit Under Test (UUT)COMPONENT random_4PORT(clk : IN std_logic;reset : IN std_logic;din : IN std_logic_vector(3 downto 0);dout : OUT std_logic_vector(3 downto 0);load : IN std_logic);END COMPONENT;--Inputssignal clk : std_logic := '0';signal reset : std_logic := '0';signal din : std_logic_vector(3 downto 0) := (others => '0'); signal load : std_logic := '0';--Outputssignal dout : std_logic_vector(3 downto 0);-- Clock period definitionsconstant clk_period : time := 10 ns;---variablesignal cnt: integer :=0;BEGIN-- Instantiate the Unit Under Test (UUT)uut: random_4 PORT MAP (clk => clk,reset => reset,din => din,dout => dout,load => load);-- Clock process definitionsclk_process :processbeginclk <= '0';wait for clk_period/2;clk <= '1';wait for clk_period/2;end process;-- Stimulus processstim_proc: process(clk)begin-- hold reset state for 100 ns. if(cnt = 0) then--initializationreset <= '1' after 100 ps;load <= '1' after 100 ps;din <="0001";cnt <= cnt +1;---elsif(cnt =1) thenreset <= '0' after 100 ps;load <= '1' after 100 ps;din <="0001";cnt <= cnt +1;elsif(clk' event and clk ='1') then reset <= '0' after 100 ps;load <= '0' after 100 ps;din <="0001";---executuecnt <= cnt +1;if(cnt = 100) thencnt <= 2;end if;end if;end process;END;。

伪随机序列

伪随机序列

伪随机序列可由线性移位寄存器网络产生。

该网络由r级串联的双态器件,移位脉冲产生器和模2加法器组成,下面以4级移位寄存器为例,说明伪随机序列的产生。

规定移位寄存器的状态是各级从右至左的顺序排列而成的序列,这样的状态叫正状态或简称状态。

反之,称移位寄存器状态是各级从左至右的次序排列而成的序列叫反状态。

例如,初始状态是0001,那么an-4=0,an-3=0,an-2=0,an-1=1。

如果反馈逻辑为an= an-3⊕an-4,对于初始状态为0001,经过一个时钟节拍后,各级状态自左向右移到下一级,未级输出一位数,与此同时模2加法器输出值加到移位寄存器第一级,从而形成移位寄存器的新状态,下一个时钟节拍到来又继续上述过程。

未级输出序列就是伪随机序列。

其产生的伪随机序列为an=100110101111000100110101111000…,这是一个周期为15的周期序列。

改变反馈逻辑的位置及数量还可以得到更多不同的序列输出。

从上述例子可以得到下列结论:1、线性移位寄存器的输出序列是一个周期序列。

2、当初始状态是0状态时,线性移位寄存器的输出全0序列。

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

4、同一个线性移位寄存器的输出序列还和起始状态有关。

5、对于级数为r的线性移位寄存器,当周期p=2r-1时,改变移位寄存器初始状态只改变序列的初相。

这样的序列称为最大长度序列或m序列。

module M15Serial(input c_clk,input iN_rst,output o_ser);reg [3:0]flow = 4'b0001;assign o_ser = flow[0];always@(posedge c_clk or negedge iN_rst) beginif(~iN_rst)flow <= 4'b0001;elsebeginflow[3:1] <= flow[2:0];flow[0] <= flow[3] ^ flow[2];endendendmodule//output o_ser 是序列输出。

伪随机序列生成原理详解

伪随机序列生成原理详解

随机序列是一种重要的数据分析和加密技术,它能够在很多领域发挥重要作用。

然而,在计算机科学中,由于计算机系统是以确定性方式工作的,因此无法真正地产生真正的随机序列。

相反,计算机系统能够生成的是伪随机序列。

本文将详细介绍伪随机序列生成的原理。

在计算机系统中,伪随机序列是通过伪随机数发生器(Pseudo Random Number Generator,简称PRNG)产生的。

PRNG是基于特定的确定性算法设计的,它以一个称为种子(seed)的起始值作为输入,然后通过一系列的数学运算生成伪随机数序列。

种子是PRNG生成随机数的起始点,同样的种子将会生成同样的伪随机数序列。

PRNG的设计基于一个重要的原则,即一个好的PRNG在产生伪随机数时应具有良好的统计特性。

简而言之,这意味着生成的伪随机数序列应该在统计上符合一些随机性质。

例如,均匀分布是一个重要的统计特性,即生成的伪随机数应该均匀地分布在一个给定范围内。

其他常用的统计特性包括独立性(每个生成的数与前面的数无关)和周期性(序列重复的间隔)等。

常见的PRNG算法包括线性同余发生器(Linear Congruential Generator,简称LCG)和梅森旋转算法(Mersenne Twister)等。

LCG是最早出现的PRNG算法之一,它通过以下公式来递归生成伪随机数:Xn+1 = (a*Xn + c) mod m其中,Xn表示当前的伪随机数,Xn+1表示下一个伪随机数,a、c和m是事先确定的常数。

LCG算法的特点是简单、高效,但由于其线性特性,容易产生周期较短的伪随机数序列。

梅森旋转算法则是一种更复杂的PRNG算法,它具有更长的周期和更好的随机性质。

梅森旋转算法的原理基于一个巨大的素数,在该算法中,一个大的状态空间被旋转和变换,从而生成伪随机数。

梅森旋转算法由于其良好的统计特性和随机性质,广泛应用于计算机图形学、模拟和密码学等领域。

尽管PRNG能够生成伪随机序列,但由于其基于确定性算法,因此不适用于要求真正随机性的应用,例如密码学中的密钥生成和加密等。

第10章 伪随机序列 27页 0.4M PPT版

第10章  伪随机序列 27页 0.4M PPT版
mp延迟两位后得mr, 再模二相加
mr=0 1 0 0 0 1 1 1 1 0 1 0 1 1 0, …
ms=mp +mr=0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 , … 可见,ms=mp+mr为m p延迟 8 位后的序列。
10.2.4 自相关特性
m序列具有非常重要的自相关特性。在m序列中,常常用 +1代表 0,用-1代表 1。 此时定义:设长为 p的m序列, 记作
x15 1 (x 1)(x2 x 1)(x4 x 1) (x4 x3 1)((x4 x3 x2 x 1)

1
2
3
4
a3
a2
a1
a0
1
0
0
0
1
1
0
0
1
1
1
0
1
1
1
1
0
1
1
1
1
0
1
1
0
1
0
1
1
0
1
0
1
1
0
1
0
1
1
0
ak 0
0
1
1
1
0
0
1
0
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
… … … …
10.2.3 移位相加特性(线性叠加性)
m序列和它的位移序列模二相加后所得序列仍是该m序列
的某个位移序列。 设mr是周期为p的m序列mp r次延迟移位后
的序列, 那么
mp mr ms
其中ms为mp某次延迟移位后的序列。 例如, mp=0 0 0 1 1 1 1 0 1 0 1 1 0 0 1, …

伪随机序列产生

伪随机序列产生

2.4 m序列产生器的设计原理m序列是最长线性反馈移位寄存器序列,其产生方法比较简单,可以通过移位寄存器的级联实现任意m序列,本文是结合FPGA芯片的结构特点,以Altera 的QuartusⅡ软件为开发平台,设计出了m序列产生器。

通过FPGA平台,我们可以采用硬件描述语言VHDL语言来实现m序列产生器,也可以通过输入原理图来实现m序列产生器,也可以通过两者的结合来实现m序列产生器。

由于m 序列产生器的实现方法已经能够成熟,本文采用输入原理图的方法实现m 序列产生器的仿真设计。

利用n级移位寄存器可以产生长度为2n-1的m序列。

m序列的设计主要解决的问题是寻求系统的特征多项式为本原多项式的过程,部分本原多项式可以通过查表方法很方便的得到。

本文通过设计一个码长为L=31的m序列,来说明任意m序列产生器如何进行仿真设计。

由码长为31可知道所需的移位寄存器的数目为5,特征多项式的系数通过查表可以选择为100101,110111,111101三个反馈系数,可以从中选择100101来构成m序列产生器。

则特征多项式系数取值为C 5=C2=C=1,C4=C3=C1=0.根据特征多项式就可以构造出该m序列,图5就是L=31的m序列产生器的原理图。

图5 L=31的m序列产生器图5利用D触发器级联的方式完成移位寄存器的功能, CLRN是清零信号,低电平有效。

在系统初始时,CLRN置低电平使系统清零,D触发器的输出状态均为低电平,当CLRN置高时新非零值被置入。

CLK为外界时钟脉冲信号,当CLK 上升沿来临时实现移位功能。

通过异或门将反馈接入系统的输入端,反馈系数根据特征多项式的系数来断定是否接入反馈,在模2加后面加入一个非门,避免了m序列产生器输出静止的状态,如不加非门直接接入反馈到输入端,系统无法自动运动起来,造成输出序列进入了全“1”的静止状态,这样就无法产生m序列。

图中的Q1-Q5是五个D触发器的输出,这些点均可得到同宗序列,只序列的初始相位不同而已。

12伪随机序列生成器的构造

12伪随机序列生成器的构造
6.9 一个随机函数序列 {Fn ; n ≥ 1} 称为伪随 机函数序列若对每个多项式时间神概率图灵机 M,每个正多项式p(n)和一切充分大的n有 Pr{MF (1n ) =1}−Pr{MH (1n ) =1} < 1 (6.5) p(n) 构造方法6.3 ,设G为一个确定性算法,它将n长 比特串s延伸为2n长比特串G(s),定义函数G0(s) 为G(s)的前n个比特,G1(s)为G(s)的后n个比特 (即G(s)=G0(s)G1(s))对每个 ∈{0,1n 和每个 s } n x = (x1, x2 ,L, xn ) ∈{0,1} ,定义函数 fs (x) = Gxn (L(Gx2 (Gx1 (s))L ) (6.6) 定义随机函数 Fn = fU (x) ,其中Un为{0,1}n 上的均匀分 {0,1}n 中按均匀分布随机抽 布随机变量(即s在 { } 取),Fn;n ≥1 即为所构造的随机函数序列。
6.3 伪随机序列生成器的构造
6.3.1 用一般单向置换构造伪随机序列生成器 * * ,} {0 } 定理 6.5 设 f :{01 → ,1 为一1-1保长强单向函 数, b : {0,1}* →{0,1} 为函数f的硬核谓词(多项式 ( 时间可计算).定义 Gx)= f(x)b(x) (b(x)和f(x)的连 接),则G为一伪随机序列生成器。
n n
π∈Πn
n
n
n
定理 6.8 设Fn,t(n), F t(n) 如构造方法6.4中 DES 所给。若随机函数序列{Fn;n≥1}是多项式时间可 实现(计算)的,且t(n)是多项式时间可计算 {DES t(n);n≥1}也是多项式时 的,则随机函数序列 F 间可实现的,且为多项式时间可逆的随机置 } 换序列,更进一步,若 {F;n≥1 是一个伪随机 n 函数序列,则 {DESF 3; n ≥ 1} 为一伪随机置换序 列。

Python3标准库:random伪随机数生成器

Python3标准库:random伪随机数生成器

Python3标准库:random伪随机数⽣成器1. random伪随机数⽣成器random模块基于Mersenne Twister算法提供了⼀个快速伪随机数⽣成器。

原来开发这个⽣成器是为了向蒙特卡洛模拟⽣成输⼊,Mersenne Twister算法会⽣成⼤周期近均匀分布的数,因此适⽤于⼤量不同类型的应⽤。

1.1 ⽣成随机数random()函数从所⽣成的序列返回下⼀个随机的浮点值。

返回的所有值都落在0<=n<1.0区间内。

import randomfor i in range(5):print('%04.3f' % random.random(), end='')print()重复运⾏这个程序会产⽣不同的数字序列。

要⽣成⼀个指定数值区间内的数,则要使⽤uniform()。

import randomfor i in range(5):print('{:04.3f}'.format(random.uniform(1, 100)), end='')print()传⼊最⼩值和最⼤值,uniform()会使⽤公式min+(max-min)*random()来调整random()的返回值。

1.2 指定种⼦每次调⽤random()都会⽣成不同的值,并且在⼀个⾮常⼤的周期之后数字才会重复。

这对于⽣成唯⼀值或变化的值很有⽤,不过有些情况下可能需要提供相同的数据集,从⽽以不同的⽅式处理。

对此,⼀种技术是使⽤⼀个程序⽣成随机值,并保存这些随机值,以便在另⼀个步骤中再做处理。

不过,这对于量很⼤的数据来说可能并不实⽤,所以random包含了⼀个seed()函数,可以⽤来初始化伪随机数⽣成器,使它能⽣成⼀个期望的值集。

import randomrandom.seed(1)for i in range(5):print('{:04.3f}'.format(random.random()), end='')print()种⼦(seed)值会控制由公式⽣成的第⼀个值,该公式可⽤来⽣成伪随机数。

第六章伪随机序列生成器

第六章伪随机序列生成器
n n x 0,1
n
l (n)
l ( n)
; n 1
l (n)
6.2 伪随机序列生成器的定义和性质
定义 6.5 一个伪随机序列生成器是一个确定性多项式 时间算法G满足下列两个条件: 1)延伸性,存在一个正整数函数 l (n) n(n 1,2,) 使得对一 切 x 0,1*有 G( x) l ( x ) ; 2)伪随机性,随机变量序列 G(U n ); n 1是伪随机的,即 U l ( n) ; n 1 是多项式时间不 它与均匀分布随机变量序列 可区分的。 生成器G的输入x称为它的种子,要求将长n比特的种 子延伸为长l(n)比特的序列,且该序列与长l(n)的随机 比特序列是多项式时间不可区分的。l(n)>n称为的延 伸因子。

i i i 1
(3)不可预测性。 定义 6.6 随机变量序列X n ; n 1称为多项式时间 不可预测的若对每个多项式时间概率算法M’, 每个正多项式p(n)和一切充分大的n有 1 1 PrM (1 , X ) next ( X ) (6.4) 2 p ( n) 定理 6.3 一个随机变量序列X ; n 1是伪随机的 (参看定义6.4)当且仅当它是多项式时间不 可预测的。 (4)单向函数性。 定理 6.4 设G为一延伸因子l(n)的伪随机序列生 成器,若对每对 x, y 0,1满足 x y ,定义函数 f ( x, y) G( x) ,则f为一强单向函数。
第六章 伪随机序列生成器
6.1 计算不可区分性

* 0 , 1 定义 6.1 一个概率分布族是由 的一个无穷 子集I,称为指标集,和每个指标 i I 对应一个 概率分布p ( x) : D [0,1], p ( x) 0, p ( x) 1 构成,其中 * 0 , 1 Di为 的一个有穷子集。 定义 6.2 两个随机变量族 X | x D , i I 和Y | y E , i I 称为多项式时间不可区分,若对每个多项 式时间概率算法M’,每个正多项式p(n)和一切 充分大的n有 PrM ' ( X i , i) 1 PrM ' (Yi , i) 1 1 (6.1) p( i )
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,其关系由读写头所处状态的转移函数和读写头动作的指令
函数确定,若 s j sinv ,则第j+1个形如定义4.4所给,若第j个形中
的状态sj=sinv,且神带中的内容为 q 0,1* ,则第j+1个形中的状态 sj+1=sora,且神带中的内容为f(q),q称为M的提问,f(q)称为神的回 答。神图灵机的输出M,记作Mf(x),以及运行(计算)时间如定
PrX n
x0,1n

x PrYn

x, n
1
(6.3)
定义 6.4 称一个随机变量序列X n;n 1是伪随机
的,若它与 0,1l(n) 上的均匀分布随机变量序列Ul(n);n 1
是多项式时间不可区分的,其中设Xn取值于
集。 0,1l ( n )
6.2 伪随机序列生成器的定义和性质
,特别地,一个随机函数序列称为真
随机f函n 数序列若其概率分n布为 上的均匀分布,即对f 每个n

,记真随机函数序H n列; n 为 1
Байду номын сангаас

pn ( f )
1 2n2n
定义 6.8一个确定性神图灵机是一个确定性图灵机(见定义4.4)
附加一条磁带,称为神带,和两个特殊状态sinv , sora S ,sinv称为求 神状态,sora称为神现状态。当一个神图灵机M输入x,存取函数 f : 0,1* 0,1*时,其计算也是一个形的有限或无限序列,(s0 ,t0 ,i0 ), (s1,t1,i1),,(s j
义4.4所定义。
它与均匀分布随机变量序列U l(n) ; n 1 是多项式时间不
可区分的。
生成器G的输入x称为它的种子,要求将长n比特的种 子延伸为长l(n)比特的序列,且该序列与长l(n)的随机 比特序列是多项式时间不可区分的。l(n)>n称为的延 伸因子。
伪随机序列生成器的性质
(1)统计性质
定理 6.1 若是一个伪随机序列生成器,即满足定义
6.4 用伪随机序列生成器构造伪随机函数
定义 6.7 一个随机函数序列Fn ; n 1 是一个在函数集 n中取值的
随机变量序列,其概率分布为 PrFn f pn ( f ), f n,即
pn ( f ) 0, pn ( f ) 1, n 1,2,
6.5 中的条件,则随机变量序列 G(U n ); n 1与 U l(n) ; n 1
不是统计接近的。
(2)多项式延伸性
构造方法6.1,设G1为一确定性多项式时间算法,它
将每个长n比特串延伸为一个长n+1比特串,p(n)>n为
任一多项式。我们用G1作p(n)次迭代,即置s0 s, s n 为G1的初始输入,计算G1(si1) xi si ,i 1,2,, p(n) ,其中
可预测的。
(4)单向函数性。
定理 6.4 设G为一延伸因子l(n)的伪随机序列生 成器,若对每对 x, y 0,1*满足 x y ,定义函数
f (x, y) G(x),则f为一强单向函数。
6.3 伪随机序列生成器的构造
6.3.1 用一般单向置换构造伪随机序列生成器 定理 6.5 设 f : 0,1* 0,1* 为一1-1保长强单向函 数,b : 0,1* 0,1为函数f的硬核谓词(多项式时 间可计算)。定义G(x) f (x)b(x() b(x)和f(x)的连 接),则G为一伪随机序列生成器。
6.3.2 用单向置换族构造伪随机序列生成器
定理 6.6 设多项式时间概率算法A,D,F定义一 单向置换族fi : Di Di ;i I , 为该单向 bi : Di 0,1;i I 置换族的硬核谓词族,q(n)及p(n) 2q(n),G如构 造方法6.2中所给。再设对每个 i I,D(i)为在Di 上均匀分布的随机变量,则G为一伪随机序列 生成器,它将2q(n)长的种子(r,s)延伸为p(n)长 的伪随机序列。
6.1 计算不可区分性
定义 6.1 一个概率分布族是由0,1*的一个无穷 子集I,称为指标集,和每个指标 i I对应一个 概率分布pi (x) : Di [0,1], pi (x) 0, pi (x) 1构成,其中 Di为 0,1*的一个有穷子集。 xDi
定义 6.2 两个随机变量族 X i 和 | xi Di ,i I Yi | yi Ei ,i I 称为多项式时间不可区分,若对每个多项
定义 6.5 一个伪随机序列生成器是一个确定性多项式 时间算法G满足下列两个条件:
1)延伸性,存在一个正整数函数 l(n) n(n 1,2,) 使得对一 切 x 0,1*有 G(x) l( x ) ;
2)伪随机性,随机变量序列 G(U n ); n 1是伪随机的,即
即 xi 0,1, si si1 n xi为si 输入 s时i1 G1输出的长n+1比特串。
定义算法G为
G(s) x x1,x2 它x p将(n) 一个n长比特串s延
伸为一个p(n)长比特串x。由于G1是确定性多项式时
间算法,故G也是确定性的多项式时间算法。
(3)不可预测性。
式时间概率算法M’,每个正多项式p(n)和一切 充分大的n有
Pr M ' (X i ,i) 1 Pr M ' (Yi ,i) 1

1 p( i )
(6.1)
定义 6.3 两个随机变量序列X n;n 1和Yn ;n 1 的变差距离定义为
(n)

1 2
定义 6.6 随机变量序列X n;n 1称为多项式时间
不可预测的若对每个多项式时间概率算法M’,
每个正多项式p(n)和一切充分大的n有
Pr
M ' (1 Xn
,
X
n
)

next M
'
(
X
n
)

1 2
1 p(n)
(6.4)
定理 6.3 一个随机变量序列X n;n 1是伪随机的
(参看定义6.4)当且仅当它是多项式时间不
相关文档
最新文档