伪随机数的生成方法和装置制造方法及图纸

技术编号:14742169 阅读:97 留言:0更新日期:2017-03-01 17:16
本申请提供一种伪随机数的生成方法,应用在集群中的节点上,所述方法包括:从预定存储位置获取启动随机因子;根据启动随机因子和本节点要生成随机数的个数上限,确定中止随机因子,并将中止随机因子写入所述预定存储位置;以启动随机因子作为初始值,根据伪随机算法生成不超过所述个数上限的随机数。通过本申请的技术方案,极大的降低了不同节点生成相同随机数的可能性,提高了集群的运行速度,缩短了对用户的响应时间。

【技术实现步骤摘要】

本申请涉及网络通信
,尤其涉及一种伪随机数的生成方法和装置
技术介绍
随机数在计算机软件、硬件、安全等领域有着广泛的应用。目前通常使用的随机数序列是由算法产生的,由于计算机不可能产生完全随机的数字,这样生成的随机数称为伪随机数。常用的伪随机算法采用递推公式来生成随机数序列,即:将第k个随机因子输入到递推公式中,得到第(k+1)个随机因子,第(k+1)个随机数由第(k+1)个随机因子决定。第0个随机因子(即用来获得第1个随机数的随机因子)称为初始值。可见,当采用相同的初始值时,相同的伪随机算法会生成相同的随机数序列。在一些需要在短时间内产生大量随机口令的应用场合,常常由服务器集群来完成口令的生成,由集群中的若干个节点同时运行伪随机算法,来满足高并发的口令需求。现有技术中,伪随机算法经常利用某个业务相关事件发生时的系统时间来确定初始值。当集群中的节点数量和业务的密集程度增大到一定程度,就会发生不同节点使用相同初始值的情况。使用相同初始值的节点会生成一系列相同的随机数,使得这些节点所生成的随机口令经常因为已经被使用而无效,使用相同初始值的节点相当于只有一个节点在生成随机口令,降低了集群的运行速度,延长了响应时间。
技术实现思路
有鉴于此,本申请提供一种伪随机数的生成方法,应用在集群中的节点上,所述方法包括:从预定存储位置获取启动随机因子;根据启动随机因子和本节点要生成随机数的个数上限,确定中止随机因子,并将中止随机因子写入所述预定存储位置;以启动随机因子作为初始值,根据伪随机算法生成不超过所述个数上限的随机数。本申请还提供了一种伪随机数的生成装置,应用在集群中的节点上,所述装置包括:初始值获取单元,用于从预定存储位置获取启动随机因子;初始值生成单元,用于根据启动随机因子和本节点要生成随机数的个数上限,确定中止随机因子,并将中止随机因子写入所述预定存储位置;随机数生成单元,用于以启动随机因子作为初始值,根据伪随机算法生成不超过所述个数上限的随机数。由以上技术方案可见,本申请的实施例中,集群中的每个节点都从预定存储位置获得启动随机因子,按照本节点要生成随机数的个数上限递推出中止随机因子后写入预定存储位置,作为下一个节点的启动随机因子;每个节点都以启动随机因子为初始值来生成随机数,从而使得每个节点使用的初始值都不相同,极大的降低了不同节点生成相同随机数的可能性,提高了集群的运行速度,缩短了对用户的响应时间。附图说明图1是本申请实施例中一种伪随机数的生成方法的流程图;图2是本申请应用示例中集群中每个节点生成随机数的运行流程图;图3是集群节点所在设备的一种硬件结构图;图4是本申请实施例中一种伪随机数的生成装置的逻辑结构图。具体实施方式伪随机算法采用递推公式来生成随机数,根据具体算法的不同,递推公式可以是一阶的,也可以是二阶或多阶的。以二阶为例,其递推公式如式1所示:xn+2=f(xn+1,xn),n≥0式1式1中,xn、xn+1、xn+2为随机因子。对二阶递推算法,x0和x1为初始值。所生成的随机数序列如式2所示:rk=g(xk),k≥2式2根据具体应用场景的需求,可以将随机因子直接作为所生成的随机数(此时rk=xk);也可以对随机因子做数学变换后得到对应的随机数。并非所有的递推算法都可以用来生成随机数,只有用递推算法产生出来的序列经过检验符合一些统计学要求,如均匀性、抽样的随机性等满足一定条件,这样的递推算法才会被作为伪随机算法使用。也就是说,伪随机算法以某个初始值开始,递推若干次生成一系列随机因子,这些随机因子基本不会有重复的情况发生。这样,当集群中的第一个节点上要生成L个随机数时,意味着递推在该节点上将进行L次,如果第二个节点以该节点递推至少L次后所得的随机因子作为初始值,则第二个节点的初始值与第一个节点的初始值基本不会相同。将这个方式推广到集群中用来生成随机数的所有节点,则每个节点的初始值与其他节点的初始值都基本不会相同。基于上述思路,本申请的实施例提出一种新的伪随机数的生成方法,在集群中可供各个节点访问的预定存储位置保存初始值,在每个节点从该预定存储位置读取初始值后,进行若干次递推运算后得到本节点不会继续用于递推运算的随机因子,将其作为初始值写入预定存储位置,以供其他节点使用,从而基本能够确保每个节点的初始值都与其他节点不同,以解决现有技术中存在的问题。本申请实施例中的集群包括至少两个节点,每个节点是一个运行伪随机算法生成随机数的单位,例如,节点可以是一台物理服务器、一个逻辑设备(如虚拟机或模拟器)、或者一个独立运行的程序实例等等。本申请的实施例中对集群的运行方式和组网结构、节点的种类和通信方式等均不做限定。本申请实施例中,在每个节点上运行的伪随机数的生成方法的流程如图1所示。步骤110,从预定存储位置获取启动随机因子。本申请的实施例中,预定存储位置可被集群中运行伪随机算法的所有节点访问,并且这些节点对保存在预定存储位置的内容都具有读写的权限。预定存储位置可以是在集群中的某个节点上,也可以在集群外的设备上,不做限定。例如,启动随机因子被节点用来作为初始值,输入递推公式以生成随机数序列。集群中每个节点上运行相同阶数的伪随机算法,不同阶数的伪随机算法的初始值个数不同。启动随机因子的个数与节点上运行的伪随机算法的阶数相同,预定存储位置所保存的值的个数与每个节点的启动随机因子的个数相同。当启动随机因子的个数超过一个时,每个节点按照同样的顺序将预定存储位置保存的值赋予各个启动随机因子。步骤120,根据启动随机因子和本节点要生成随机数的个数上限,确定中止随机因子,并将中止随机因子写入所述预定存储位置。假设本节点要生成随机数的个数上限为N(N为自然数),在从预定存储位置读取启动随机因子后,节点以启动随机因子为初始值,用伪随机算法中的递推公式进行至少K次递推(K不小于N),设节点所使用伪随机算法的阶数m(m为自然数),将递推得到的第K个随机因子到第(K-m-1)个随机因子作为中止随机因子。节点将中止随机因子写入预定存储位置,将预定存储位置原来的值更新为中止随机因子。当中止随机因子超过一个时,每个节点按照与从预定存储位置读取启动随机因子时同样的顺序,将中止随机因子写入预定存储位置。例如,对采用一阶递推算法的伪随机算法,启动随机因子和中止随机因子都只有一个,节点以启动随机因子作为初始值,运行N次伪随机算法,得到第N个随机因子。由于本节点要生成随机数的个数上限为N,本节点不会再用第N个随机因子来递推第(N+1)个随机因子,因此本节点可以将第N个随机因子作为中止随机因子,写入到预定存储位置,供其他节点作为启动随机因子使用。在一些应用场景中,整个集群需要利用某个伪随机算法生成不超过某个确定数量的随机数,此时可以将这个确定数量的随机数作为每个节点上要生成随机数的个数上限。如果整个集群要生成的随机数数量难以确定,则在每个节点上要生成的随机数的个数上限也难以确定,此时可以令每个节点按照批次来生成随机数,每批次生成一定数量的随机数,当一个批次生成的随机数达到该数量时,节点从预定存储位置重新获取初始值。具体而言,在每批次的起始,节点从预定存储位置获取启动随机因子,并将本批次剩余数量置为本批次本文档来自技高网...
伪随机数的生成方法和装置

【技术保护点】
一种伪随机数的生成方法,应用在集群中的节点上,其特征在于,所述方法包括:从预定存储位置获取启动随机因子;根据启动随机因子和本节点要生成随机数的个数上限,确定中止随机因子,并将中止随机因子写入所述预定存储位置;以启动随机因子作为初始值,根据伪随机算法生成不超过所述个数上限的随机数。

【技术特征摘要】
1.一种伪随机数的生成方法,应用在集群中的节点上,其特征在于,所述方法包括:从预定存储位置获取启动随机因子;根据启动随机因子和本节点要生成随机数的个数上限,确定中止随机因子,并将中止随机因子写入所述预定存储位置;以启动随机因子作为初始值,根据伪随机算法生成不超过所述个数上限的随机数。2.根据权利要求1所述的方法,其特征在于,所述根据启动随机因子和本节点要生成随机数的个数上限,确定中止随机因子,包括:以启动随机因子作为初始值,运行N次所述伪随机算法,将得到的第N个随机因子作为中止随机因子;N为本节点要生成随机数的个数上限。3.根据权利要求2所述的方法,其特征在于,所述个数上限为本节点本批次要生成的随机数的本批次个数上限;所述方法还包括:在从预定存储位置获取启动随机因子后,将本批次剩余数量置为本批次个数上限;在生成每个随机数之后,将本批次剩余数量减一,直到本批次剩余数量为零;所述从预定存储位置获取初始随机因子,包括:当本批次剩余数量为零时,从预定存储位置获取本批次启动随机因子。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:在从预定存储位置获取启动随机因子前,对预定存储位置加锁;在将中止随机因子写入预定存储位置后,对预定存储位置解锁。5.根据权利要求1所述的方法,其特征在于,所述集群中的每个节点上运行相同的伪随机算法;除初始值外,所述伪随机算法采用的其他参数相同。6.一种伪随机数的生成装置,应用在集群中的节点上,其特征在于...

【专利技术属性】
技术研发人员:唐志慧
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1