可逆随机数生成器制造技术

技术编号:14172158 阅读:125 留言:0更新日期:2016-12-13 00:00
本发明专利技术公开了一种可逆随机数生成器,为基于存储器的可逆生成器、均匀分布的可逆生成器、其他分布的可逆生成器中的一种。本发明专利技术可逆随机数生成器可以通过正向随机数生成算法生成随机数列,同时也可以根据当前输出的随机数通过逆向随机数生成算法回推随机数列,性能优异,工作效果好。

Reversible random number generator

The invention discloses a reversible random number generator, which is a reversible generator based on memory, a uniformly distributed reversible generator and a kind of other distributed reversible generator. This invention relates to a reversible random number generator can generate random numbers by forward random number generation algorithm, can also according to the random number of the current output of the random number generation algorithm by reverse push back random series, excellent performance, good working effect.

【技术实现步骤摘要】

本专利技术涉及一种可逆随机数生成器
技术介绍
概率分布被计算机代码用来模拟物理系统模型,随机数生成器被用来生成符合一定概率分布的数列。生成随机数数列已经被研究好多年,主要的研究内容有:(1)在一定精度范围内,增加随机数的长度,(2)提高生成器的速度,(3)生成复杂分布数列,(4)降低多个数列间的相互影响。然而,关于生成器的可逆方面很少被研究或考虑。尽管它与这些研究有很多交叉的方面,但是它还没有受到广泛关注。
技术实现思路
本专利技术的目的在于提供一种可以通过正向随机数生成算法生成随机数列,同时也可以根据当前输出的随机数通过逆向随机数生成算法回推随机数列的可逆随机数生成器。本专利技术的技术解决方案是:一种可逆随机数生成器,其特征是:为基于存储器的可逆生成器、均匀分布的可逆生成器、其他分布的可逆生成器中的一种:(1)基于存储器的可逆生成器:给定一个大小为Mz位的空间,每个随机数的精度为B位,那么可逆随机数序列的长度为M=Mz/B;基于存储器可逆随机数算法包括正向和反向遍历一个随机数数列的方法;正向随机数数列由函数R*(x)生成;算法使用一个大小为M的循环缓冲区B来实现可逆;这个循环缓冲区下标取值范围是从0到M-1,h为头指针,c为当前指针,t为尾指针,(a)正向(b)反向R-1(x):c=(c-1)mod Mu=B[c]return u;流程为:开始→h!=t→B[t]=R*()→修改尾指针t=(t+1)modM;然后结束或返回→h!=t步骤;(2)均匀分布的可逆生成器:一个均匀分布的伪随机数生成器正向和逆向的执行的算法:(a)正向R():y=f(x)u=U(y)return u;(b)反向R-1():y=f-1(x)u=U(y)return u;f(x)从当前种子值计算下一个种子值,而f-1(x)是从当前种子值计算前面种子值;U(x)映射种子值到区间[0,1);U(x)既被用于正向计算也被用于反向计算;正向算法流程:产生初始种子值x0→根据前一个种子值计算下一个种子值Xn=f(xn-1)→映射当前随机数Un=U(Xn)→将当前随机数保存到存储器中;然后输出或返回步骤:根据前一个种子值计算下一个种子值Xn=f(xn-1);F(x)的公式为:其中:a为乘子,0<a<M;c为增量,0≤c<M;M为模数,M>0,通常取2的整数次幂;x0为种子,0≤x0<M;为满足较好的统计性质,a和M以及c和M均互质;逆向算法流程:当前随机数xn+1→根据前一个种子值计算下一个种子值Xn=f-1(xn+1)→映射当前随机数Un=U(Xn)→将当前随机数保存到存储器中;然后输出或返回步骤:根据前一个种子值计算下一个种子值Xn=f-1(xn+1);F-1(x)的公式为:其中:b=am-2modm;(3)其他分布的可逆生成器:其他分布的伪随机数生成器正向和逆向算法(a)正向R():y=f(x)s=S(y)u=U(s)return u;(b)反向R-1():y=f-1(x)s=S-1(y)u=U(s)return u;f()从当前种子值计算下一个种子值,而f-1()是从当前种子值计算前面种子值;S()为变换函数实现不同分布,U()映射种子值到区间[0,1);U()既被用于正向计算也被用于反向计算;其中: S - 1 ( x ) = - log x λ x ∈ [ 0 , 1 ] 0 o t h e r w i s e ; ]]>上述有关字母的含义:U为函数U(Xn)u为函数的值,公式为:un=U(xn)S为函数S(Xn)s为函数的值,公式为:sn=S(xn)e是自然对数的底数,是一个无限不循环小数;λ表示特征值y为函数的值。本专利技术可逆随机数生成器可以通过正向随机数生成算法生成随机数列,同时也可以根据当前输出的随机数通过逆向随机数生成算法回推随机数列,性能优异,工作效果好。下面结合附图和实施例对本专利技术作进一步说明。图1是可逆随机数生成器示意图。图2是基于存储器的正向随机数生成器示意图。图3是基于存储器的正向随机数生成器存储空间示意图。图4是基于存储器可逆随机数算法流程示意图。图5是均匀分布的可逆生成器正向随机数生成器算法流程示意图。图6是均匀分布的可逆生成器逆向随机数生成器算法流程示意图。具体实施方式可逆随机数生成器可以通过正向随机数生成算法生成随机数列,同时也可以根据当前输出的随机数通过逆向随机数生成算法回推随机数列,如图1所示;为了能够准确的回访随机数生成序列,传统的方法是使用每个被生成的随机数的检测点的基值。这个方法能够解决正确性问题,但是浪费了资源,因为这需要消耗大量的内存空间和内存拷贝的时间。为了避免检测点,可逆的方法在尝试的时候又很快遇到一个新的问题,有一些随机数生成器是基于有损或者破坏性计算,比如取模操作。这就意味着可逆计算没有比基于检查点更有效的方法了。为了解决这样的问题,就需要开发不需要任何检查点就能回访随机数序列的可逆随机数生成器。理论上,这样的随机数生成器确实存在,因为随机数序列是循环序列中的数值,它应该可以同等难度的正向与反向遍历。这里,提出三种有效的可逆随机数生成器方法既可以正向遍历也可以反向遍历。(1)基于存储器的可逆生成器(2)均匀分布的可逆生成器(3)其他分布的可逆生成器1、基于存储器的可逆生成器这儿有一个通用的方法适合所有的可逆随机数生成器。任何可逆的随机数生成器都可以将生成的随机数保存在计算机存储器中并使它们能逆转,因为最简单的可逆可以基于正向随机数列后进先出操作。这是一个最费空间,但最通用的方法,因为他不需要去计算生成的随机数。例如,随机数来源于大气辐射能够很容易的使用基于存储器的方法实现可逆。因为,不管是基于物理的随机数生成器还是伪随机数都很难去通过计算可逆,但可逆性可以很容易本文档来自技高网...
可逆随机数生成器

【技术保护点】
一种可逆随机数生成器,其特征是:为基于存储器的可逆生成器、均匀分布的可逆生成器、其他分布的可逆生成器中的一种:(1)基于存储器的可逆生成器:给定一个大小为Mz位的空间,每个随机数的精度为B位,那么可逆随机数序列的长度为M=Mz/B;基于存储器可逆随机数算法包括正向和反向遍历一个随机数数列的方法;正向随机数数列由函数R*(x)生成;算法使用一个大小为M的循环缓冲区B来实现可逆;这个循环缓冲区下标取值范围是从0到M‑1,h为头指针,c为当前指针,t为尾指针,(a)正向(b)反向流程为:开始→h!=t→B[t]=R*()→修改尾指针t=(t+1)modM;然后结束或返回→h!=t步骤;(2)均匀分布的可逆生成器:一个均匀分布的伪随机数生成器正向和逆向的执行的算法:(a)正向R():y=f(x)u=U(y)return u;(b)反向R‑1():y=f‑1(x)u=U(y)return u;f(x)从当前种子值计算下一个种子值,而f‑1(x)是从当前种子值计算前面种子值;U(x)映射种子值到区间[0,1);U(x)既被用于正向计算也被用于反向计算;正向算法流程:产生初始种子值x0→根据前一个种子值计算下一个种子值Xn=f(xn‑1)→映射当前随机数Un=U(Xn)→将当前随机数保存到存储器中;然后输出或返回步骤:根据前一个种子值计算下一个种子值Xn=f(xn‑1);F(x)的公式为:其中:a为乘子,0<a<M;c为增量,0≤c<M;M为模数,M>0,通常取2的整数次幂;x0为种子,0≤x0<M;为满足较好的统计性质,a和M以及c和M均互质;逆向算法流程:当前随机数xn+1→根据前一个种子值计算下一个种子值Xn=f‑1(xn+1)→映射当前随机数Un=U(Xn)→将当前随机数保存到存储器中;然后输出或返回步骤:根据前一个种子值计算下一个种子值Xn=f‑1(xn+1);F‑1(x)的公式为:其中:b=am‑2modm;(3)其他分布的可逆生成器:其他分布的伪随机数生成器正向和逆向算法(a)正向R():y=f(x)s=S(y)u=U(s)return u;(b)反向R‑1():y=f‑1(x)s=S‑1(y)u=U(s)return u;f()从当前种子值计算下一个种子值,而f‑1()是从当前种子值计算前面种子值;S()为变换函数实现不同分布,U()映射种子值到区间[0,1);U()既被用于正向计算也被用于反向计算;其中:S-1(x)={-log xλx∈[0,1]0otherwise;]]>上述有关字母的含义:U为函数U(Xn)u为函数的值,公式为:un=U(xn)S为函数S(Xn)s为函数的值,公式为:sn=S(xn)e是自然对数的底数,是一个无限不循环小数;λ表示特征值y为函数的值。...

【技术特征摘要】
1.一种可逆随机数生成器,其特征是:为基于存储器的可逆生成器、均匀分布的可逆生成器、其他分布的可逆生成器中的一种:(1)基于存储器的可逆生成器:给定一个大小为Mz位的空间,每个随机数的精度为B位,那么可逆随机数序列的长度为M=Mz/B;基于存储器可逆随机数算法包括正向和反向遍历一个随机数数列的方法;正向随机数数列由函数R*(x)生成;算法使用一个大小为M的循环缓冲区B来实现可逆;这个循环缓冲区下标取值范围是从0到M-1,h为头指针,c为当前指针,t为尾指针,(a)正向(b)反向流程为:开始→h!=t→B[t]=R*()→修改尾指针t=(t+1)modM;然后结束或返回→h!=t步骤;(2)均匀分布的可逆生成器:一个均匀分布的伪随机数生成器正向和逆向的执行的算法:(a)正向R():y=f(x)u=U(y)return u;(b)反向R-1():y=f-1(x)u=U(y)return u;f(x)从当前种子值计算下一个种子值,而f-1(x)是从当前种子值计算前面种子值;U(x)映射种子值到区间[0,1);U(x)既被用于正向计算也被用于反向计算;正向算法流程:产生初始种子值x0→根据前一个种子值计算下一个种子值Xn=f(xn-1)→映射当前随机数Un=U(Xn)→将当前随机数保存到存储器中;然后输出或返回步骤:根据前一个种子值计算下一个种子值Xn=f(xn-1);F(x)的公式为:其中:a为乘子,0<a<M;c为增量,0≤c<M;M为模数,M>0,通常取2的整数次幂;x0为种子,0≤x0<M;为满足较好的统计性质,a和M以及c和M均互质;逆向算法流程:当前随机数xn+1→根据前一个种子值计算下一个种子值Xn=f-1(xn+1)→映射当前随机数Un=U(Xn)→将当前随机数保存到存储器中;然后输出或返回步骤:根据前一个种子值计算下一个种子值Xn=f-1(xn+1);F-1(x)的公式为:其中:b=am-2modm;(3)其他分布的可逆生成器:其他分布的伪随机数生成器正向和逆向算法(a)正向R():y=f(x)s=S(y)u=U(s)return u;(b)反向R-1():y=f-1(x)s=S-1(y)u=U(s)re...

【专利技术属性】
技术研发人员:卫丽华朱鹏程
申请(专利权)人:南通理工学院
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1