具有高斯分布的随机数产生的FPGA实现
简介
高斯随机数具有良好的随机性质,高斯随机数序列还在其他科学研究与工程领域得到广泛的应用。
高斯随机数的产生可以分为两类:一是真随机数发生器,二是伪随机数发生器。
真随机数的产生即模拟高斯随机数的产生是依赖于物理随机过程。真随机数发生器产生的精度是最高的,但是往往实现电路复杂。再者,真随机数发生器对周围的环境(如温度)很敏感。
伪随机数发生器即数字随机数发生器具有灵活,稳定,不受周围环境影响,产生速度快等特点。伪随机数发生器实际上就是一种确定性的算法,伪随机数发生器产生的随机序列是可复发的,有一定的周期,所以并不是真正意义上的随机数,但是如果其重复的周期非常大的时候,则在一定范围内是可以认为是不可重复的。(本文主要研究数字式的高斯随机数发生器及其实现方法)
本文在在产生高斯随机数序列的初级阶段选用细胞自动机代替传统的线性反馈移位寄存器,然后再结合经典的Box-Muller算法产生出理想的高斯随机数序列。
理论基础
细胞自动机
细胞自动机是维空间中一组细胞单元组成的阵列,一个细胞自动机可用四元组表示为:
C A = ( A D , Z q , f i ( o , r ) , B ) CA = (A_D,Z_q,f_{i(o,r)},B) CA=(AD,Zq,fi(o,r),B)
其中,空间结构,
A D A_D AD
是由D维细胞单元构成的空间结构,状态空间
Z q Z_q Zq
是细胞自动机中细胞单元 i 的状态取值范围;邻域函数规则
f i ( o , r ) f_{i(o,r)} fi(o,r)
是细胞自动机的邻域半径 r 确定的第 i 个细胞单元的 0 阶邻域状态配置与其转移状态之间的映射;边界条件 B 规定了某个细胞单元领域半径之内的邻域单元在超出细胞自动机空间结构时的处理方法。
90/150细胞自动机
在一维线性细胞自动机中,只有规则为 90/150 的零边界的加性细胞自动机的特征多项式才是不可约的,且其特征多项式与最小多项式相等,周期也等于其最小多项式的周期,所以零边界条件的 90/150 细胞自动机是研究的主要的细胞自动机的类型。
90/150加性细胞自动机的结构图:
可编程细胞自动机
可编程细胞自动机,即细胞单元在不同的时钟周期中采用不同的邻域函数时的细胞自动机。
90/150可编程混合细胞自动机的结构图:
其中,
R = ( ( n o t C 0 ) a n d R 0 ) o r ( C 1 a n d R 1 ) R = ((notC_0)andR_0)or(C_1andR_1) R=((notC0)andR0)or(C1andR1)
为规则的选取控制,
R 0 , R 1 R_0,R_1 R0,R1
为可编程细胞自动机的两组规则,在本文中则为
R 0