CN105045561A - 一种伪随机数产生方法 - Google Patents
一种伪随机数产生方法 Download PDFInfo
- Publication number
- CN105045561A CN105045561A CN201510494086.2A CN201510494086A CN105045561A CN 105045561 A CN105045561 A CN 105045561A CN 201510494086 A CN201510494086 A CN 201510494086A CN 105045561 A CN105045561 A CN 105045561A
- Authority
- CN
- China
- Prior art keywords
- random number
- pseudo random
- pseudo
- linear feedback
- shift register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Tests Of Electronic Circuits (AREA)
Abstract
本发明公开了一种伪随机数产生方法,对两个以上伪随机数发生器进行运算,产生长序列周期高速伪随机数的方法;其中每个伪随机数的产生基于并行结构最长线性反馈移位寄存器电路;要求参与运算的伪随机数发生器产生的伪随机数互不相关;能实时产生有多个数据位的均匀分布伪随机数,也能产生其它分布的伪随机数,还能产生宽频带的数字白噪声信号;其均值、方差等参数可调节。
Description
技术领域
本发明涉及信号发生领域,具体是一种伪随机数产生方法。
背景技术
理想白噪声信号的功率谱密度函数在所有频率上是一个常数,其功率无穷大,因此是不能物理实现的。一个噪声信号在感兴趣的频率范围内其功率谱密度函数近似为一个常数,被称为带限白噪声信号,物理上是能够实现的。带限白噪声信号与理想白噪声信号的性质类似。实际电路***的带宽是有限的,只要产生的带限白噪声信号的频率范围宽于实际电路的带宽,其对信号***的影响跟相同谱密度、相同概率分布的理想白噪声信号的影响是相同的。将模拟白噪声信号的电压数字化后,可形成较为理想的随机数。
传统上噪声信号发生是基于物理技术。例如,利用放射性物质的放射性,使用探测器对其计数产生随机数。利用气体放电管的放电产生噪声信号。在上世纪六七十年代,气体放电管作为噪声标准在国内外曾得到广泛的应用。以上产生噪声的方法技术复杂、安全性不高,因此又诞生了基于电路噪声的固态噪声发生技术。例如,利用电阻的热噪声或半导体器件的噪声,可产生宽带噪声信号,其原理框图如图1所示。
导体中载流子随机热运动而产生的起伏噪声叫热噪声,热噪声电压与温度有关,其均方值为:
V2=4kTBR
其中R为导体的电阻,B为电路的带宽,k为波尔兹曼常数,T为绝对温度。因为热噪声起源于多数载流子的运动,所以它的瞬时幅值服从均值为零的高斯分布,当温度和阻值一定时,热噪声电压的谱密度与频率无关,因此,电阻的热噪声是高斯型的白噪声。
一个半导体二极管反向偏置工作于雪崩击穿状态,在雪崩区内,由于电子-空穴对产生速率的随机起伏性质而产生雪崩散弹噪声。在一定的雪崩频率下,雪崩散弹噪声与白噪声相似,其噪声功率谱密度均匀分布。因此,反向工作于雪崩击穿状态的二极管可成为一个较理想的噪声源。利用齐纳二极管或PIN二极管的雪崩击穿产生噪声信号,再经宽带放大,可产生宽带噪声信号。
固态噪声发生器频率范围较宽,可覆盖至微波频段,输出信号的概率密度符合高斯分布,属于高斯白噪声信号。传统噪声信号发生器的缺点是输出信号的概率分布不能调整、谱密度调整困难。实际应用中,经常需要数字型的随机数或噪声信号。将固态噪声发生器的输出量化,可产生数字型的噪声信号。
下面阐述基于物理技术产生真随机数的方法。利用齐纳二极管的雪崩击穿产生的噪声,经隔直与宽带放大,可产生模拟的宽带白噪声信号,该噪声信号是高斯分布的。使用高速的A/D转换器将模拟噪声信号数字化,可产生高斯分布的数字噪声信号,原理框图如图2所示。图中Vcc为直流电压源,R为限流电阻,以使二极管D工作在雪崩击穿区。L提供直流通路,同时隔离交流信号,C为隔直流电容,同时将噪声信号耦合输出,N是放大电路。量化的噪声信号再跟数值0比较,如果数值大于等于0就输出1,如果小于0就输出0,用这种方法产生了一个均匀分布的二进制随机数,原理框图如图3所示。当然也可以使用高速的模拟比较器将模拟噪声信号转换成二进制的数字噪声信号。
序列周期有限的随机数称为伪随机数,序列周期有限的随机信号称为伪随机信号。伪随机数的序列周期越长,其统计特性越好,越接近真随机数。由于真随机数的产生电路较为复杂,工程上,常使用伪随机数代替真随机数,因为其数学性质类似,能够满足工程需要。
利用计算机可以方便的产生均匀分布伪随机数。产生伪随机数的方法有平方取中法、乘同余法、线性同余算法。平方取中法、乘同余法产生伪随机数的质量不高。在计算机上,常用线性同余算法产生伪随机数。线性同余法递推公式为:
rand(n)=(rand(n-1)*mult+inc)modM
其中rand(n)是当前随机数,rand(n-1)是前一时刻随机数,mult是乘数因子,M=2L为模值。inc是增量,通常情况下可取小于M的奇数。C语言编译器中函数rand()可产生0~32767之间的随机整数。VC中产生伪随机数的公式为:
rand(n)=((rand(n-1)*214013+2531011)mod65536)&0x7fff
BC中产生伪随机数的公式为:
rand(n)=((rand(n-1)*22695477+1)mod65536)&0x7fff
利用数字技术,产生均匀分布伪随机数后,可方便的产生其它分布伪随机数,例如高斯分布伪随机序列,以及均值、方差、谱密度可调的伪随机数字白噪声信号。
m序列又称最长线性反馈移位寄存器序列,是研究得比较深入的一种二进制伪随机序列。常用于扩频通信、测距、电路测试等领域。它由带线性反馈的移位寄存器产生,如图4所示。图中一位移位寄存器的状态用ai表示,ai=0或ai=1,i为整数。反馈线的连接状态用Ci表示,Ci=0表示该反馈线断开,Ci=1表示反馈存在。
移位寄存器在时钟信号的控制下,一步步向外移位输出。由于反馈的存在,若初始状态为全“0”,则移位后得到的仍为全“0”,因此应避免出现全“0”状态;又因为n级移存器共有2n种可能的不同状态,除全“0”状态外,剩下2n-1种状态可用。每移位一次,就出现一种状态,在移位若干次后,一定能重复出现前某一状态,其后的过程便周而复始,也就是说,输出信号一定是周期信号。反馈线位置不同将出现不同周期的不同序列,希望找到合适的线性反馈逻辑,能使移位寄存器产生的序列最长,即达到周期M=2n-1。按图中连线关系,移位寄存器组左端所得到的输入可以写为:
an=c1an-1⊕c2an-2⊕c3an-3⊕...⊕cn-1a1⊕cna0
式中⊕是异或运算符。选择合适的线性反馈逻辑时,输出序列就是一个周期为2n-1的m序列。
Ci的取值决定了具体移位寄存器的反馈连接、序列结构和周期,为便于表达Ci的状态,引进多项式:
f(x)=c0+c1x+c2x2+...+cn-1xn-1+cnxn
该式称为特征多项式。当知道一个线性反馈移位寄存器的特征多项式,就可以决定线性反馈移位寄存器的结构。已经证明,若线性反馈移位寄存器的特征多项式为本原多项式,则此线性反馈移位寄存器能产生m序列。这是线性反馈移位寄存器产生m序列的充分必要条件。在实际应用中,根据数据位数需要首先确定m序列的长度,然后通过查表就可以方便地得到m序列发生器的反馈逻辑。一定长度的线性反馈移位寄存器,有很多个本原多项式,对应不同的m序列。常用的本原多项式,前人已经以表格的形式给出。例如,当n=31时,f(x)=1+x3+x31为本原多项式,可产生m序列。对应公式中的C0=1,C3=1,C31=1。序列周期为231-1,恰好为一个梅森素数。m序列有以下性质:
(1)平衡特性。在m序列的每个2n-1周期中,“1”码元出现的数目为2n-1次,“0”码元出现的数目为2n-1-1次,即“0”的个数总是比“1”的个数少一个,这表明,序列平均值极小。
(2)游程特性。游程是指在一个序列周期中连续排列的且取值相同的码元的合称,在一个游程中的码元的个数为游程长度。m序列中共有2n-1个游程。其中长度为k(1≤k≤n-2)的游程数目占总游程数的2-k,长度为n-1的连“0”的游程数为1,长度为n的连“1”游程数为1。
(3)移位相加特性。一个m序列{an}与其任意次延迟移位后产生的另一个不同序列{an+k}模2相加,得到的仍是该m序列的延迟移位序列。如,01001l1右移1次产生另一个序列1010011,模2相加后的序列为1l10100,相当于原序列右移3次后得到的序列。
(4)m序列具有优良的自相关特性,其自相关函数:
最长线性反馈移位寄存器通常存在很多个m序列。例如3位的最长线性反馈移位寄存器存在2个m序列,4位的最长线性反馈移位寄存器存在2个m序列,5位的最长线性反馈移位寄存器存在6个m序列,6位的最长线性反馈移位寄存器存在6个m序列,7位的最长线性反馈移位寄存器存在18个m序列,8位的最长线性反馈移位寄存器存在16个m序列,9位的最长线性反馈移位寄存器存在48个m序列,10位的最长线性反馈移位寄存器存在60个m序列,11位的最长线性反馈移位寄存器存在176个m序列,12位的最长线性反馈移位寄存器存在144个m序列,13位的最长线性反馈移位寄存器存在630个m序列,14位的最长线性反馈移位寄存器存在756个m序列,15位的最长线性反馈移位寄存器存在1800个m序列。随着最长线性反馈移位寄存器位数的增加,m序列的个数迅速增加。
系数为5个的19位最长线性反馈移位寄存器存在158个m序列。其本原多项式为1+x+x2+x5+x19、1+x+x2+x6+x19、1+x+x4+x6+x19、1+x3+x4+x6+x19、1+x+x5+x6+x19、1+x+x4+x7+x19、1+x5+x6+x7+x19、1+x+x6+x8+x19、…、1+x13+x17+x18+x19、1+x14+x17+x18+x19。系数为3个的25位最长线性反馈移位寄存器存在4个m序列。其本原多项式为1+x3+x25、1+x7+x25、1+x18+x25、1+x22+x25。一个本原多项式通常存在一个镜像本原多项式,这两个本原多项式系数的个数相同,系数的阶数以最长线性反馈移位寄存器的位数对称。例如19阶本原多项式1+x+x2+x5+x19与1+x14+x17+x18+x19镜像,1+x+x2+x6+x19与1+x13+x17+x18+x19镜像。25阶本原多项式1+x3+x25与1+x22+x25镜像,1+x7+x25与1+x18+x25镜像。两个镜像的本原多项式生成的m序列有较强的相关性。没有镜像关系的本原多项式生成的m序列的互相关函数几乎为零,可以认为是不相关的。例如本原多项式1+x+x2+x5+x19、1+x+x2+x6+x19、1+x+x4+x6+x19、1+x3+x4+x6+x19、1+x+x5+x6+x19、1+x+x4+x7+x19、1+x5+x6+x7+x19、1+x+x6+x8+x19、1+x3+x25、1+x7+x25之间互不相关。
m序列的伪随机性很好,但它每次只能输出一位。要想产生一个多数据位的伪随机数,很自然的想法是从最长线性反馈移位寄存器中直接抽取几位,得到一个多位的随机数。图5是一个从8位的最长线性反馈移位寄存器中得到4位伪随机数的电路示意图。其线性反馈逻辑电路对应的本原多项式可选择1+x2+x3+x4+x8,即a6、a5、a4、a0数据位对应的反馈线处于连接状态。但这种方法不好,因为本时刻输出的伪随机数,与下一时刻输出的伪随机数,除一个数据位是新生成的外,其它几个数据位是相同的,只不过位置偏移了一位。本时刻输出的伪随机数,与下一下一时刻输出的伪随机数,除两个数据位是新生成的外,其它两个数据位是相同的,只不过位置偏移了两位。依次类推。也就是说用这种方法生成的伪随机数前后之间有较强的相关性,因此其质量不够好。
发明内容
本发明的目的是提供一种伪随机数产生方法,以解决现有技术存在的问题。
为了达到上述目的,本发明所采用的技术方案为:
一种伪随机数产生方法,其特征在于:基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k],以二进制表示为Am-1[k]Am-2[k]...A1[k]A0[k];基于并行结构的Nb位最长线性反馈移位寄存器的伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k],以二进制表示为Bm-1[k]Bm-2[k]...B1[k]B0[k];伪随机数A[k]与伪随机数B[k]中对应数据位进行异或运算,生成伪随机数D[k],以二进制表示为Dm-1[k]Dm-2[k]...D1[k]D0[k];要求伪随机数发生器A生成的伪随机数A[k]与伪随机数发生器B生成的伪随机数B[k]不相关,即伪随机数发生器A的本原多项式与伪随机数发生器B的本原多项式不能是镜像本原多项式,由于伪随机数发生器A与伪随机数发生器B之间不相关,生成的伪随机数D[k]中的每一位是均匀分布的,因此D[k]是m位均匀分布伪随机数。
本发明为一种对两个以上伪随机数发生器进行运算,产生长序列周期高速伪随机数的方法;其中每个伪随机数的产生基于并行结构最长线性反馈移位寄存器电路;要求参与运算的伪随机数发生器产生的伪随机数互不相关。本发明能实时产生有多个数据位的均匀分布伪随机数,也能产生其它分布的伪随机数,还能产生宽频带的数字白噪声信号,其均值、方差等参数可调节。
附图说明
图1固态噪声信号发生器原理框图。
图2高斯分布数字噪声信号发生器原理框图。
图3二进制均匀分布数字噪声信号发生器原理框图。
图4最长线性反馈移位寄存器原理框图。
图5从8位最长线性反馈移位寄存器抽取4位数的原理框图。
图6并行结构伪随机数发生电路原理框图。
图7发明的长序列周期高速伪随机数产生电路原理框图。
图8有三个电路单元的高速伪随机数产生电路原理框图。
图9不同分布伪随机数产生电路原理框图。
图10伪随机数产生电路的一个具体实施原理框图。
图11伪随机数产生电路的另一个具体实施原理框图。
图12高斯分布伪随机数概率密度曲线。
图13高斯分布伪随机数累积分布函数曲线。
图14产生高斯分布伪随机数时查找表中的数值曲线。
图158位伪随机数发生器示意图。
图16模式选择控制电路。
具体实施方式
从最长线性反馈移位寄存器中抽取几位数的方法中相临伪随机数之间有部分数据位是相同的,只不过位置有所偏移,生成的伪随机数质量不好,需要做出改进。
对于n位的最长线性反馈移位寄存器,内部寄存器的值表示了电路的状态{Q[k]},当前时刻寄存器的值记为Qn-1[k]、Qn-2[k]、Qn-3[k]...Q1[k]、Q0[k],Qn[k]为
Qn[k]=c1Qn-1[k]⊕c2Qn-2[k]⊕c3Qn-3[k]⊕...⊕cn-1Q1[k]⊕cnQ0[k]
下时刻电路的状态记为{Q[k+1]},寄存器的值为Qn-1[k+1]、Qn-2[k+1]、Qn-3[k+1]...Q1[k+1]、Q0[k+1],则
Qn-1[k+1]=Qn[k]
Qn-2[k+1]=Qn-1[k]
Qn-3[k+1]=Qn-2[k]
...
Q1[k+1]=Q2[k]
Q0[k+1]=Q1[k]
Qn[k+1]=c1Qn-1[k+1]⊕c2Qn-2[k+1]⊕c3Qn-3[k+1]⊕...⊕cn-1Q1[k+1]⊕cnQ0[k+1]
下下时刻电路的状态记为{Q[k+2]},寄存器的值为Qn-1[k+2]、Qn-2[k+2]、Qn-3[k+2]...Q1[k+2]、Q0[k+2],则
Qn-1[k+2]=Qn[k+1]
Qn-2[k+2]=Qn-1[k+1]
Qn-3[k+2]=Qn-2[k+1]
...
Q1[k+2]=Q2[k+1]
Q0[k+2]=Q1[k+1]
Qn[k+2]=c1Qn-1[k+2]⊕c2Qn-2[k+2]⊕c3Qn-3[k+2]⊕...⊕cn-1Q1[k+2]⊕cnQ0[k+2]
依次类推。如果准备并行输出m位的二进制数据,为了克服前述方法生成伪随机数的缺点,需要来m个时钟,将电路的状态从{Q[k]}变为{Q[k+m]},寄存器的值为Qn-1[k+m]、Qn-2[k+m]、Qn-3[k+m]...Q1[k+m]、Q0[k+m]。用这种方法生成的m位的二进制数据为Qm-1[k+m]、Qm-2[k+m]、...、Q1[k+m]、Q0[k+m]。这样生成的m位伪随机数前后之间没有任何数据位是相同的,很好地的克服了数据之间的相关性,伪随机数的质量得到了极大改善。由于每位二进制数“0”与“1”码元的概率是相同的,因此生成的m位的伪随机数是均匀分布的。当m位的伪随机数看作补码时,数值范围为[-2m-1,2m-1-1]。当m位的伪随机数看作无符号数时,数值范围为[0,2m-1]。
上述方法的缺点是每来m次时钟,才能得到一个伪随机数,因此电路生成伪随机数的速度下降了m倍。如果对上述电路的状态{Q[k]}递推,依次得到{Q[k+1]}...{Q[k+m]},将电路状态{Q[k+m]}的逻辑推导出只依赖于{Q[k]}的状态,那么设计出来的最长线性反馈移位寄存器每来一个时钟,就能输出一个m位的伪随机数,生成伪随机数的速度得到了极大提高,其内部状态相当于原来的最长线性反馈移位寄存器改变m次的状态。这种并行结构的最长线性反馈移位寄存器原理框图如图6所示。
本发明提出了一种将一个并行结构最长线性反馈移位寄存器与一个以上并行结构最长线性反馈移位寄存器相结合产生长序列周期伪随机数的方法,原理框图如图7所示。
如果基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k],以二进制表示为Am-1[k]Am-2[k]...A1[k]A0[k]。基于并行结构的Nb位最长线性反馈移位寄存器的伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k],以二进制表示为Bm-1[k]Bm-2[k]...B1[k]B0[k]。伪随机数A[k]与伪随机数B[k]中对应数据位进行异或运算,生成伪随机数D[k],以二进制表示为Dm-1[k]Dm-2[k]...D1[k]D0[k]。要求伪随机数发生器A生成的伪随机数A[k]与伪随机数发生器B生成的伪随机数B[k]不相关,即伪随机数发生器A的本原多项式与伪随机数发生器B的本原多项式不能是镜像本原多项式。由于伪随机数发生器A与伪随机数发生器B之间不相关,生成的伪随机数D[k]中的每一位是均匀分布的,因此D[k]是m位均匀分布伪随机数。
当m为偶数时,并行结构伪随机数发生器A的序列周期为2Na-1,并行结构伪随机数发生器B的序列周期为2Nb-1。伪随机数D[k]的序列周期为伪随机数发生器A与B序列周期的最小公倍数。因此伪随机数D[k]的序列周期得到了极大扩展。
采用三级伪随机数发生器电路结构时,原理框图如图8所示。基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k]。基于并行结构最长线性反馈移位寄存器的Nb位伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k]。基于并行结构最长线性反馈移位寄存器的Nc位伪随机数发生器C,生成了m位的均匀分布伪随机数,记为C[k]。A[k]与B[k]与C[k]进行异或运算,生成m位的均匀分布伪随机数D[k]。要求伪随机数发生器A与伪随机数发生器B与伪随机数发生器C互不相关。
当m为偶数时,并行结构伪随机数发生器A的序列周期为2Na-1,并行结构伪随机数发生器B的序列周期为2Nb-1,并行结构伪随机数发生器C的序列周期为2Nc-1。伪随机数D[k]的序列周期为伪随机数发生器A与B与C序列周期的最小公倍数。因此伪随机数D[k]的序列周期得到了极大扩展。
可以设计有更多电路单元的伪随机数发生器。例如可以设计有四个并行结构最长线性反馈移位寄存器的伪随机数发生器,将这四个伪随机数发生器的输出进行异或运算,生成有多个数据位的均匀分布伪随机数。要求这四个伪随机数发生器互不相关。生成伪随机数的序列周期为这四个伪随机数发生器序列周期的最小公倍数。
生成均匀分布的伪随机数后,就容易生成各种分布的伪随机数及噪声信号了。例如可以产生均匀分布、高斯分布、其它分布伪随机数,也可以产生均匀分布、高斯分布、其它分布数字白噪声信号,其均值、方差、谱密度可调节。由均匀分布伪随机数转换成其它分布伪随机数的电路框图如图9所示。生成其它分布伪随机数时,均匀分布伪随机数经过查找表转换成所需分布的伪随机数。改变查找表中的数值,可以改变伪随机数的分布、均值、方差。也可以生成所需分布、均值、方差、谱密度的伪随机数字白噪声信号。生成伪随机数字白噪声信号时,输出的数字噪声信号带宽最高约为电路时钟频率的一半。
具体实施例:
以32位最长线性反馈移位寄存器生成8位伪随机数为例,说明本发明中用到的高速伪随机数生成方法的具体实现。取本原多项式1+x2+x6+x7+x32,当前时刻k的电路状态为{Q[k]},其寄存器值为Q31[k]、Q30[k]、...、Q1[k]、Q0[k],Q32[k]为
Q32[k]=Q30[k]⊕Q26[k]⊕Q25[k]⊕Q0[k]
则递推式中k+8时刻的电路状态{Q[k+8]}为
Q0[k+8]=Q8[k]
Q1[k+8]=Q9[k]
...
Q23[k+8]=Q31[k]
Q24[k+8]=Q32[k]=Q30[k]⊕Q26[k]⊕Q25[k]⊕Q0[k]
Q25[k+8]=Q32[k+1]=Q30[k+1]⊕Q26[k+1]⊕Q25[k+1]⊕Q0[k+1]
=Q31[k]⊕Q27[k]⊕Q26[k]⊕Q1[k]
Q26[k+8]=Q32[k+2]=Q30[k+2]⊕Q26[k+2]⊕Q25[k+2]⊕Q0[k+2]
=Q32[k]⊕Q28[k]⊕Q27[k]⊕Q2[k]
=Q30[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]⊕Q25[k]⊕Q2[k]⊕Q0[k]
Q27[k+8]=Q32[k+3]=Q30[k+3]⊕Q26[k+3]⊕Q25[k+3]⊕Q0[k+3]
=Q32[k+1]⊕Q29[k]⊕Q28[k]⊕Q3[k]
=Q31[k]⊕Q29[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]⊕Q3[k]⊕Q1[k]
Q28[k+8]=Q32[k+4]=Q30[k+4]⊕Q26[k+4]⊕Q25[k+4]⊕Q0[k+4]
=Q32[k+2]⊕Q30[k]⊕Q29[k]⊕Q4[k]=Q30[k]⊕Q28[k]⊕Q27[k]
⊕Q26[k]⊕Q25[k]⊕Q2[k]⊕Q0[k]⊕Q30[k]⊕Q29[k]⊕Q4[k]
=Q29[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]⊕Q25[k]⊕Q4[k]⊕Q2[k]⊕Q0[k]
Q29[k+8]=Q32[k+5]=Q30[k+5]⊕Q26[k+5]⊕Q25[k+5]⊕Q0[k+5]
=Q32[k+3]⊕Q31[k]⊕Q30[k]⊕Q5[k]
=Q30[k]⊕Q29[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]⊕Q5[k]⊕Q3[k]⊕Q1[k]
Q30[k+8]=Q32[k+6]=Q30[k+6]⊕Q26[k+6]⊕Q25[k+6]⊕Q0[k+6]
=Q32[k+4]⊕Q32[k]⊕Q31[k]⊕Q6[k]=Q29[k]⊕Q28[k]⊕Q27[k]
⊕Q26[k]⊕Q25[k]⊕Q4[k]⊕Q2[k]⊕Q0[k]⊕Q30[k]⊕Q26[k]
⊕Q25[k]⊕Q0[k]⊕Q31[k]⊕Q6[k]
=Q31[k]⊕Q30[k]⊕Q29[k]⊕Q28[k]⊕Q27[k]⊕Q6[k]⊕Q4[k]⊕Q2[k]
Q31[k+8]=Q32[k+7]=Q30[k+7]⊕Q26[k+7]⊕Q25[k+7]⊕Q0[k+7]
=Q30[k+7]⊕Q26[k+7]⊕Q25[k+7]⊕Q0[k+7]=Q32[k+5]⊕Q32[k+1]
⊕Q32[k]⊕Q7[k]=Q30[k]⊕Q29[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]
⊕Q5[k]⊕Q3[k]⊕Q1[k]⊕Q31[k]⊕Q27[k]⊕Q26[k]⊕Q1[k]
⊕Q30[k]⊕Q26[k]⊕Q25[k]⊕Q0[k]⊕Q7[k]
=Q31[k]⊕Q29[k]⊕Q28[k]⊕Q26[k]⊕Q25[k]⊕Q7[k]⊕Q5[k]⊕Q3[k]
⊕Q0[k]
Q32[k+8]=Q30[k+8]⊕Q26[k+8]⊕Q25[k+8]⊕Q0[k+8]
推导出的上述各式中,k+8时刻的电路状态只依赖于k时刻的电路状态。用这种方法设计出的并行结构最长线性反馈移位寄存器每来一个时钟,就相当于原来的最长线性反馈移位寄存器的内部状态改变了8次,能输出1个8位的伪随机数,改进了串行输出方法速度慢的缺点。由于32位最长线性反馈移位寄存器有232-1个状态,其不能被8整除,因此8位伪随机数的周期为232-1。
用相同的方法可以推导出31位最长线性反馈移位寄存器的并行结构反馈逻辑电路。以生成8位伪随机数为例,取本原多项式1+x3+x31,当前时刻k的电路状态为{Q[k]},其寄存器值为Q30[k]、Q29[k]、...、Q1[k]、Q0[k],Q31[k]为
Q31[k]=Q28[k]⊕Q0[k]
则递推式中k+8时刻的电路状态{Q[k+8]}为
Q0[k+8]=Q8[k]
Q1[k+8]=Q9[k]
...
Q22[k+8]=Q30[k]
Q23[k+8]=Q31[k]=Q28[k]⊕Q0[k]
Q24[k+8]=Q31[k+1]=Q28[k+1]⊕Q0[k+1]
=Q29[k]⊕Q1[k]
Q25[k+8]=Q31[k+2]=Q28[k+2]⊕Q0[k+2]
=Q30[k]⊕Q2[k]
Q26[k+8]=Q31[k+3]=Q28[k+3]⊕Q0[k+3]
=Q28[k]⊕Q3[k]⊕Q0[k]
Q27[k+8]=Q31[k+4]=Q28[k+4]⊕Q0[k+4]
=Q31[k+1]⊕Q4[k]=Q28[k+1]⊕Q0[k+1]⊕Q4[k]
=Q29[k]⊕Q4[k]⊕Q1[k]
Q28[k+8]=Q31[k+5]=Q28[k+5]⊕Q0[k+5]
=Q31[k+2]⊕Q5[k]=Q28[k+2]⊕Q0[k+2]⊕Q5[k]
=Q30[k]⊕Q5[k]⊕Q2[k]
Q29[k+8]=Q31[k+6]=Q28[k+6]⊕Q0[k+6]
=Q31[k+3]⊕Q6[k]=Q28[k+3]⊕Q0[k+3]⊕Q6[k]
=Q28[k]⊕Q0[k]⊕Q3[k]⊕Q6[k]
=Q28[k]⊕Q6[k]⊕Q3[k]⊕Q0[k]
Q30[k+8]=Q31[k+7]=Q28[k+7]⊕Q0[k+7]
=Q31[k+4]⊕Q7[k]=Q28[k+4]⊕Q0[k+4]⊕Q7[k]
=Q31[k+1]⊕Q4[k]⊕Q7[k]=Q28[k+1]⊕Q0[k+1]⊕Q4[k]⊕Q7[k]
=Q29[k]⊕Q7[k]⊕Q4[k]⊕Q1[k]
Q31[k+8]=Q28[k+8]⊕Q0[k+8]=Q30[k]⊕Q8[k]⊕Q5[k]⊕Q2[k]
推导出的上述各式中,k+8时刻的电路状态只依赖于k时刻的电路状态。用这种方法设计出的并行结构最长线性反馈移位寄存器每来一个时钟,就相当于原来的最长线性反馈移位寄存器的内部状态改变了8次,能输出1个8位的伪随机数,改进了串行输出方法速度慢的缺点。由于31位最长线性反馈移位寄存器有231-1个状态,其不能被8整除,因此8位伪随机数的周期为231-1。
下面以两个电路单元的伪随机数发生器为例,说明本发明的一个具体实施。电路框图如图10所示。伪随机数发生器A为32位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数A[k],选择本原多项式1+x2+x6+x7+x32,其并行结构反馈逻辑前面已做过推导。伪随机数发生器B为31位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数B[k],选择本原多项式1+x3+x31,其并行结构反馈逻辑前面已做过推导。伪随机数A[k]与B[k]进行异或运算,生成伪随机数D[k]。伪随机数A[k]的序列周期为232-1。伪随机数B[k]的序列周期为231-1,是一个梅森素数。伪随机数D[k]的序列周期为伪随机数A[k]的序列周期与伪随机数B[k]的序列周期的最小公倍数,为(232-1)(231-1),约为263,比A[k]的序列周期大大增加。伪随机数的序列周期越长,性能越接近理想随机数。
下面以三个电路单元的伪随机数发生器为例,说明本发明的另一个具体实施。电路框图如图11所示。伪随机数发生器A为32位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数A[k],选择本原多项式1+x2+x6+x7+x32。伪随机数发生器B为31位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数B[k],其本原多项式为1+x3+x31。伪随机数发生器C为19位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数C[k],其本原多项式为1+x+x2+x5+x19,其并行结构反馈逻辑可参考前面的推导方法。伪随机数A[k]与B[k]与C[k]进行异或运算,生成8位伪随机数D[k]。伪随机数A[k]的序列周期为232-1。伪随机数B[k]的序列周期为231-1,是一个梅森素数。伪随机数C[k]的序列周期为219-1,是一个梅森素数。伪随机数D[k]的序列周期为伪随机数A[k]与B[k]与C[k]的序列周期的最小公倍数,为(232-1)(231-1)(219-1),约为282,比A[k]的序列周期大大增加。应说明,本例中伪随机数发生器A与伪随机数发生器B与伪随机数发生器C的阶数选择是任意的,只要三者互不相关即可。
本发明可产生均匀分布伪随机数、高斯分布伪随机数,也可以产生其它分布伪随机数,其均值、方差可调节。
要产生概率密度为f(x)的随机数,其累积分布函数为F(x),有
当y为[0,1.0]之间的均匀分布伪随机数序列时,x即为概率密度为f(x)的伪随机数序列。
工程实践中,产生的伪随机数范围不是从负无穷大到正无穷大,而是一个有位数限制的伪随机数。因此,实际产生的某种分布的随机数,是对这种分布的理想随机数的一种近似。例如要产生一个8位的伪随机数,其数值范围为-128~127,要产生一个16位的伪随机数,其数值范围为-32768~32767。由y值得到x值可通过一个查找表电路实现。查找表是一个通过输入地址值查找得到输出数值的电路,一般用RAM实现。
产生均匀分布伪随机数时,由以上方法得知,查找表中存储的数值曲线为一条直的斜线。
产生高斯分布伪随机数时,其概率密度曲线如图12所示,其累积分布函数曲线如图13所示,查找表中存储的数值曲线如图14所示。
用以上方法,可产生其它分布的伪随机数。生成不同的伪随机数,只需按要求,计算好查找表中的数值曲线,进行装载即可。
本发明可产生长序列周期伪随机数,也可产生宽频带的数字白噪声信号,其均值、方差等参数可调节。当产生伪随机数时,外部CPU通过读接口电路将伪随机数读出,每读一次,读出当前伪随机数,并生成下一个伪随机数。当产生数字白噪声信号时,需要一个时钟,在时钟的激励下生成高速数字噪声信号。
下面以产生8位伪随机数与数字噪声信号为例,说明其工作原理。当伪随机数发生电路以图15表示时,伪随机数及数字噪声信号发生控制电路如图16所示。电路中MODE_SEL为模式选择输入信号,为0时选择产生噪声信号,为1时选择产生伪随机数。CLK为输入时钟信号。/CS为片选输入信号,当为0时,表示对本电路进行操作。/RD为CPU发出的读输入信号,当为0时,表示进行读操作。RNG[7..0]为伪随机数输入信号,来自伪随机数发生电路。RNGCLK为时钟输出信号,连接至上图,作为伪随机数发生电路的时钟。Q[7..0]为数字噪声输出信号,当选择产生噪声信号模式时,每一个时钟的上升沿输出一个数字噪声信号,输出数字白噪声信号的带宽最大约为时钟频率的一半。DB[7..0]为伪随机数输出信号,连接至CPU的数据总线上,为三态信号,当选择产生伪随机数模式时,CPU对本电路每读一次,伪随机数发生电路输出一个伪随机数,同时产生下一个伪随机数。
对伪随机数或数字噪声信号进行采样,采样序列设为{xi},N个样本的均值u为:
方差σ2相当于求信号交流部分的功率,公式为:
当N值较大时,采样序列的均值u、方差σ2可以作为该信号的真实均值、真实方差的一个估计,其误差很小。
把均值为u、方差为σ2的伪随机数序列{xi}归一化成均值为0、方差为1的伪随机数序列{yi},公式为:
用均值为0、方差为1的伪随机数序列{xi}构造均值为u、方差为σ2的伪随机数序列{yi},公式为:
yi=u+σ*xi
设带限数字白噪声信号的带宽为B、均值为0、方差为σ2,则其幅度谱密度为:
A(f)=σ/B
功率谱密度为:
P(f)=σ2/B
用以上方法,可控制输出伪随机数的均值、方差,以及数字白噪声信号的均值、方差、幅度谱密度或功率谱密度。
使用高速FPGA电路实现本文论述的方法,时钟频率可达500MHz,可每秒产生500M个伪随机数,可输出200MHz带宽以上的宽带数字噪声信号。使用超高速的数字电路实现,可输出更高带宽的数字噪声信号。
应当理解本文所述的例子和实施方式仅为了说明,本领域技术人员可根据它做出各种修改或变化,在不脱离本发明的精神实质的情况下,都属于本发明的保护范围。
Claims (1)
1.一种伪随机数产生方法,其特征在于:基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k],以二进制表示为Am-1[k]Am-2[k]...A1[k]A0[k];基于并行结构的Nb位最长线性反馈移位寄存器的伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k],以二进制表示为Bm-1[k]Bm-2[k]...B1[k]B0[k];伪随机数A[k]与伪随机数B[k]中对应数据位进行异或运算,生成伪随机数D[k],以二进制表示为Dm-1[k]Dm-2[k]...D1[k]D0[k];要求伪随机数发生器A生成的伪随机数A[k]与伪随机数发生器B生成的伪随机数B[k]不相关,即伪随机数发生器A的本原多项式与伪随机数发生器B的本原多项式不能是镜像本原多项式,由于伪随机数发生器A与伪随机数发生器B之间不相关,生成的伪随机数D[k]中的每一位是均匀分布的,因此D[k]是m位均匀分布伪随机数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510494086.2A CN105045561A (zh) | 2015-08-12 | 2015-08-12 | 一种伪随机数产生方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510494086.2A CN105045561A (zh) | 2015-08-12 | 2015-08-12 | 一种伪随机数产生方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105045561A true CN105045561A (zh) | 2015-11-11 |
Family
ID=54452128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510494086.2A Pending CN105045561A (zh) | 2015-08-12 | 2015-08-12 | 一种伪随机数产生方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045561A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844411A (zh) * | 2016-10-19 | 2017-06-13 | 中科聚信信息技术(北京)有限公司 | 一种基于约瑟夫环的大数据随机存取***和方法 |
CN107733547A (zh) * | 2017-09-26 | 2018-02-23 | 国网山西省电力公司电力科学研究院 | 一种电磁探测的扩频编码信号及其发生*** |
CN109697048A (zh) * | 2017-10-20 | 2019-04-30 | 图核有限公司 | 在神经网络中生成随机性 |
CN110633070A (zh) * | 2019-09-12 | 2019-12-31 | 成都锐成芯微科技股份有限公司 | 伪随机数发生器及伪随机数生成方法 |
CN110780846A (zh) * | 2019-09-29 | 2020-02-11 | 太原理工大学 | 一种由低速物理随机数产生高速物理随机数的方法及装置 |
CN110909375A (zh) * | 2019-10-12 | 2020-03-24 | 浙江工业大学 | 一种保留分布特征的地址脱敏方法 |
CN111538476A (zh) * | 2020-04-20 | 2020-08-14 | 佳缘科技股份有限公司 | 一种提高输出序列随机性的细粒度校正方法 |
CN112840543A (zh) * | 2018-08-21 | 2021-05-25 | 德克萨斯仪器股份有限公司 | 通过后处理对扩展频谱时钟/频率进行的频谱整形 |
CN112947895A (zh) * | 2021-01-28 | 2021-06-11 | 长春汇通光电技术有限公司 | 位置读数获得方法、装置、编码器以及存储介质 |
CN114416024A (zh) * | 2022-01-24 | 2022-04-29 | 扬州宇安电子科技有限公司 | 一种结合高斯分布及伪随机分布的噪声调制方法及调制器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1914590A (zh) * | 2004-01-30 | 2007-02-14 | 日本胜利株式会社 | 伪随机数生成装置以及伪随机数生成程序 |
CN102314332A (zh) * | 2011-07-27 | 2012-01-11 | 中国科学院计算机网络信息中心 | 伪随机数生成装置和方法 |
CN102736891A (zh) * | 2011-12-22 | 2012-10-17 | 云南大学 | 一种并行可调节的伪随机序列发生器设计 |
-
2015
- 2015-08-12 CN CN201510494086.2A patent/CN105045561A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1914590A (zh) * | 2004-01-30 | 2007-02-14 | 日本胜利株式会社 | 伪随机数生成装置以及伪随机数生成程序 |
CN102314332A (zh) * | 2011-07-27 | 2012-01-11 | 中国科学院计算机网络信息中心 | 伪随机数生成装置和方法 |
CN102736891A (zh) * | 2011-12-22 | 2012-10-17 | 云南大学 | 一种并行可调节的伪随机序列发生器设计 |
Non-Patent Citations (3)
Title |
---|
戴志平 等: "《SystemView数字通信***仿真设计》", 31 August 2011, 北京邮电大学出版社 * |
王华奎 等: "《移动通信原理》", 31 January 2009, 清华大学出版社 * |
王澜涛 等: "基于m序列的可重构线性反馈移位寄存器研究", 《电脑与信息技术》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844411A (zh) * | 2016-10-19 | 2017-06-13 | 中科聚信信息技术(北京)有限公司 | 一种基于约瑟夫环的大数据随机存取***和方法 |
CN106844411B (zh) * | 2016-10-19 | 2020-03-17 | 中科聚信信息技术(北京)有限公司 | 一种基于约瑟夫环的大数据随机存取***和方法 |
CN107733547B (zh) * | 2017-09-26 | 2019-11-08 | 国网山西省电力公司电力科学研究院 | 一种电磁探测的扩频编码信号生成方法及其发生*** |
CN107733547A (zh) * | 2017-09-26 | 2018-02-23 | 国网山西省电力公司电力科学研究院 | 一种电磁探测的扩频编码信号及其发生*** |
CN109697048A (zh) * | 2017-10-20 | 2019-04-30 | 图核有限公司 | 在神经网络中生成随机性 |
CN109697048B (zh) * | 2017-10-20 | 2024-03-22 | 图核有限公司 | 在神经网络中生成随机性 |
CN112840543A (zh) * | 2018-08-21 | 2021-05-25 | 德克萨斯仪器股份有限公司 | 通过后处理对扩展频谱时钟/频率进行的频谱整形 |
CN110633070A (zh) * | 2019-09-12 | 2019-12-31 | 成都锐成芯微科技股份有限公司 | 伪随机数发生器及伪随机数生成方法 |
CN110780846A (zh) * | 2019-09-29 | 2020-02-11 | 太原理工大学 | 一种由低速物理随机数产生高速物理随机数的方法及装置 |
CN110909375A (zh) * | 2019-10-12 | 2020-03-24 | 浙江工业大学 | 一种保留分布特征的地址脱敏方法 |
CN110909375B (zh) * | 2019-10-12 | 2022-04-08 | 浙江工业大学 | 一种保留分布特征的地址脱敏方法 |
CN111538476A (zh) * | 2020-04-20 | 2020-08-14 | 佳缘科技股份有限公司 | 一种提高输出序列随机性的细粒度校正方法 |
CN112947895A (zh) * | 2021-01-28 | 2021-06-11 | 长春汇通光电技术有限公司 | 位置读数获得方法、装置、编码器以及存储介质 |
CN114416024A (zh) * | 2022-01-24 | 2022-04-29 | 扬州宇安电子科技有限公司 | 一种结合高斯分布及伪随机分布的噪声调制方法及调制器 |
CN114416024B (zh) * | 2022-01-24 | 2022-12-02 | 扬州宇安电子科技有限公司 | 一种结合高斯分布及伪随机分布的噪声调制方法及调制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105045561A (zh) | 一种伪随机数产生方法 | |
CN108768619B (zh) | 一种基于环形振荡器的强puf电路的工作方法 | |
US20050207574A1 (en) | System and method for generating pseudorandom numbers | |
CN105138306A (zh) | 一种数据位数可选的伪随机信号发生方法 | |
CN110071803B (zh) | 一种纯数字电路真随机数发生器 | |
US4218749A (en) | Apparatus and method for digital noise synthesis | |
CN105183428A (zh) | 一种伪随机信号产生方法 | |
Michaels | A maximal entropy digital chaotic circuit | |
US20130191427A1 (en) | Pseudo-noise generator | |
CN105183427A (zh) | 一种产生不同分布高速噪声信号的方法 | |
WO2020014993A1 (zh) | 基于fpga的并行伪随机序列发生器设计方法 | |
CN204883682U (zh) | 一种多通道伪随机信号发生器 | |
CN204856461U (zh) | 一种数据位数可选的伪随机信号发生器 | |
CN107797964A (zh) | 基于单光子探测的多相伪随机序列快速生成及解码方法 | |
Mita et al. | A novel pseudo random bit generator for cryptography applications | |
Yu et al. | Approximate divider design based on counting-based stochastic computing division | |
CN104714207B (zh) | 塔康信标模拟器测距应答概率实现方法 | |
CN105159652A (zh) | 一种多通道伪随机信号发生方法 | |
Ma et al. | A pseudo-random sequence generation scheme based on RNS and permutation polynomials | |
Gudla et al. | Design and implementation of digital clock manager based pseudo-true random number generator | |
Choi et al. | Analysis of 90/150 CA Corresponding to the Power of Irreducible Polynomials. | |
TWI387921B (zh) | 利用中央極限定理之常態分佈亂數產生器及其亂數產生方法 | |
Guo et al. | A true random number generator based on the multiple-scrolls chaotic system | |
CN107911208B (zh) | 一种混沌序列产生方法及产生器 | |
PV et al. | Design and implementation of efficient stochastic number generator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151111 |
|
RJ01 | Rejection of invention patent application after publication |