评估随机数生成器质量的方法及装置与流程

文档序号:12119404阅读:389来源:国知局
评估随机数生成器质量的方法及装置与流程

本发明涉及随机数生成器技术领域,更具体地涉及一种评估随机数生成器质量的方法及装置。



背景技术:

在各类计算机程序中,随机数生成器(Random Number Generator,RNG)是一种被广泛使用的模块,其主要功能是产生一系列随机数供计算机程序在各种情况下使用。这些生成的数被称为伪随机数,因为它们是通过某种算法计算得到的,并不真正地具备随机性。

然而,不同的随机数生成器的质量并不相同。随机数生成器的质量可以通过其产生的随机数序列的随机性来衡量。显然地,随机数序列的随机性越高,代表随机数生成器的质量越好。伪随机数的随机性是一种统计规律,其主要特征是每个数出现的可能性以及它和序列中其他数之间的相关性。如果能够有效地计算伪随机数的随机性,则可以评估对应的随机数生成器的质量。然而,目前尚缺乏计算伪随机数的随机性的方法。



技术实现要素:

考虑到上述问题而提出了本发明。根据本发明一方面,提供了一种评估随机数生成器质量的方法,所述方法包括:利用待评估的随机数生成器产生多个随机数序列;将所述多个随机数序列中的部分随机数序列输入至循环神经网络,以对所述循环神经网络进行训练;利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测;以及根据所述预测的结果判定所述随机数生成器的质量。

在本发明的一个实施例中,所述利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测包括:对于所述其余随机数序列中的每一个随机数序列:将该随机数序列中的前N-1个随机数输入至所述训练好的循环神经网络,其中N为该随机数序列中随机数的数目,且N为大于1的自然数;以及基于所述训练好的循环神经网络预测该随机数序列中的最后一个随机数。

在本发明的一个实施例中,所述根据所述预测的结果判定所述随机数生成器的质量包括:对于所述其余随机数序列中的每一个随机数序列,确定所述训练好的循环神经网络对该随机数序列中需预测的随机数的预测结果是否错误;以及基于所述训练好的循环神经网络预测错误的次数和所述其余随机数序列的个数计算所述训练好的循环神经网络进行预测的错误率,以作为所述随机数生成器的质量评估结果。

在本发明的一个实施例中,所述待评估的随机数生成器产生的多个随机数序列各自的序列长度不同。

在本发明的一个实施例中,所述部分随机数序列的个数大于所述其余随机数序列的个数。

在本发明的一个实施例中,所述循环神经网络为长短时记忆网络。

根据本发明另一方面,提供了一种评估随机数生成器质量的装置,所述装置包括:神经网络训练模块,用于将待评估的随机数生成器产生的多个随机数序列中的部分随机数序列输入至循环神经网络,以对所述循环神经网络进行训练;随机数预测模块,用于利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测;以及质量判定模块,用于根据所述随机数预测模块的预测结果判定所述随机数生成器的质量。

在本发明的一个实施例中,所述随机数预测模块进一步用于:对于所述其余随机数序列中的每一个随机数序列:将该随机数序列中的前N-1个随机数输入至所述训练好的循环神经网络,其中N为该随机数序列中随机数的数目,且N为大于1的自然数;以及基于所述训练好的循环神经网络预测该随机数序列中的最后一个随机数。

在本发明的一个实施例中,所述质量判定模块进一步用于:对于所述其余随机数序列中的每一个随机数序列,确定所述随机数预测模块对该随机数序列中需预测的随机数的预测结果是否错误;以及基于所述随机数预测模块预测错误的次数和所述其余随机数序列的个数计算所述随机数预测模块进行预测的错误率,以作为所述随机数生成器的质量评估结果。

在本发明的一个实施例中,所述待评估的随机数生成器产生的多个随机数序列各自的序列长度不同。

在本发明的一个实施例中,所述部分随机数序列的个数大于所述其余随机数序列的个数。

在本发明的一个实施例中,所述循环神经网络为长短时记忆网络。

根据本发明实施例的评估随机数生成器质量的方法及装置基于循环神经网络对随机数生成器所产生的随机数序列的相关性进行建模,从而可以利用循环神经网络对随机数序列的相关性进行估计,实现客观、有效地评估随机数生成器的质量,因此能够作为比较、选取和设计随机数生成器的参考依据,对于文件加密和数据传输等领域具有重要的价值。

附图说明

通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1示出用于实现根据本发明实施例的评估随机数生成器质量的方法和装置的示例电子设备的示意性框图;

图2示出根据本发明实施例的评估随机数生成器质量的方法的示意性流程图;

图3示出根据本发明实施例的评估随机数生成器质量的装置的示意性框图;以及

图4示出根据本发明实施例的评估随机数生成器质量的系统的示意性框图。

具体实施方式

为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。

首先,参照图1来描述用于实现本发明实施例的评估随机数生成器质量的方法和装置的示例电子设备100。

如图1所示,电子设备100包括一个或多个处理器102、一个或多个存储装置104、输入装置106以及输出装置108,这些组件通过总线系统110和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。

所述处理器102可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制所述电子设备100中的其它组件以执行期望的功能。

所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。

所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。

所述输出装置108可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。

示例性地,用于实现根据本发明实施例的评估随机数生成器质量的方法和装置的示例电子设备可以被实现为诸如智能手机、平板电脑等。

下面,将参考图2描述根据本发明实施例的评估随机数生成器质量的方法200。

在步骤S210,利用待评估的随机数生成器产生多个随机数序列。

在一个实施例中,假设待评估的随机数生成器为G。随机数生成器G所产生的随机数为伪随机数,但按照行业惯例,下文中还是称为随机数。随机数生成器G所产生的随机数可以是随机整数,也可以是浮点数。为了简单,下面以随机整数为例来描述。

在一个示例中,随机数生成器G所产生的随机数的取值范围为[0,M]。示例性地,M为正整数,例如M的取值可以为32767、65535或其他任何合适的数值。每次调用G,会得到一个位于区间[0,M]内的随机数;连续多次调用G,则会得到一个随机数序列。因此,可以通过调用G,构造多个随机数序列。

应了解,本发明不受具体采用的随机数生成器的限制,无论是现有的随机数生成器还是将来开发的随机数生成器,都可以应用于根据本发明实施例的评估随机数生成器质量的方法中,并且也应包括在本发明的保护范围内。

在步骤S220,将所述多个随机数序列中的部分随机数序列输入至循环神经网络,以对所述循环神经网络进行训练。

在一个实施例中,利用待评估的随机数生成器产生多个随机数序列可以包括利用待评估的随机数生成器产生两组随机数序列,每组随机数序列包括一定数目的随机数序列。对于这两组随机数序列,其中的一组随机数序列(即前述的多个随机数序列中的部分随机数序列)可以用于步骤S220中对循环神经网络的训练,另一组随机数序列(即多个随机数序列中除所述部分随机数序列以外的其余随机数序列)可以用于步骤S220以后要讨论的预测步骤,关于其应用稍后会详细讨论。

在一个示例中,用于训练循环神经网络的随机数序列的个数可以大于用于后续预测的随机数序列的个数,这样,采用更多的随机数序列进行训练可提高所训练出的模型的精确度。此外,用于训练循环神经网络的随机数序列的具体个数可以结合训练需要、计算复杂度、计算性能等各种因素而设置,用于后续预测的随机数序列的个数可以根据对随机数生成器的质量评估精度需求等因素而设置,本发明对这两部分随机数序列的具体个数不作限定,也不限定这两者之间的关系。

接着上面的示例,可以通过调用待评估的随机数生成器G产生第一组随机数序列S1,有其中T1为S1中随机数序列的数目。在一个示例中,T1的典型值为106。在其他示例中,T1也可以选取其他合适的值。Χm,m∈[1,T1]代表该组随机数序列S1中的一个随机数序列。L(Χm)为随机数序列Χm的序列长度,即随机数序列Χm中所包括的随机数的个数。在一个示例中,L(Χm)可以与待评估的随机数生成器G产生的随机数的取值范围相关。例如,L(Χm)是区间内的随机整数,其中符号代表下取整操作。在其他示例中,L(Χm)也可以取任何其他合适的值。

同样地,可以通过调用待评估的随机数生成器G产生第二组随机数序列S2,有S2={Y1,Y2,...,YT2},其中T2为S2中随机数序列的数目。例如,T2的典型值为105。在其他示例中,T2也可以选取其他合适的值。Yn,n∈[1,T2]代表该组随机数序列S2中的一个随机数序列。L(Yn)为随机数序列Yn的序列长度,即随机数序列Yn中所包括的随机数的个数。在一个示例中,L(Yn)可以与待评估的随机数生成器G产生的随机数的取值范围相关。例如,L(Yn)是区间内的随机整数,其中符号代表下取整操作。在其他示例中,L(Yn)也可以取任何其他合适的值。

如上所述,可以将上述第一组随机数序列S1输入至循环神经网络,以对所述循环神经网络进行训练。其中,对循环神经网络的训练可以包括对循环神经网络结构的设计、以及对设计好的循环神经网络的训练。下面示例性地描述循环神经网络的设计和训练过程。

在一个示例中,首先设计循环神经网络的结构。示例性地,循环神经网络可以包括若干数目的网络层数(例如4层或其他合适数目的网络层)。示例性地,循环神经网络可以采用长短时记忆(Long-Short Term Memory,LSTM)作为基本单元。在一个示例中,循环神经网络可包括一定数目的隐含层节点(例如512或其他合适数目)。此外,在一个示例中,为了防止模型过拟合,可对于每一隐含层可执行一定概率(例如0.5或其他合适的概率)的丢弃(dropout)操作。上面仅示例性地描述了循环神经网络的结构,还可以采用任何其他合适的结构。在一个具体示例中,所设计的循环神经网络的网络层数为4层,采用长短时记忆作为基本单元,隐含层节点的数目为512,对于每一层执行概率为0.5的丢弃(dropout)操作。实验表明,采用该具体结构的循环神经网络可以在网络结构相对比较简单的情况下保证对随机数生成器的质量的判断的准确性。

然后,将上述第一组随机数序列S1输入至设计好的循环神经网络,对该循环神经网络进行训练。在训练过程中,示例性地,每一次迭代时从S1中随机选取一个序列送入循环神经网络,示例性地,训练过程迭代次2T1后终止,最终得到模型R。

上述第二组随机数序列S2可以用于接下来将描述的步骤。

在步骤S230,利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测。

在一个实施例中,步骤S230可以进一步包括:对于所述其余随机数序列中的每一个随机数序列:将该随机数序列中的前N-1个随机数输入至所述训练好的循环神经网络,其中N为该随机数序列中随机数的数目,且N为大于1的自然数;以及基于所述训练好的循环神经网络预测该随机数序列中的最后一个随机数。

例如,接着上面的示例,可以利用训练好的循环神经网络对上述第二组随机数序列S2中的部分随机数进行预测。示例性地,该预测过程可以包括:对于S2中的每一个随机数序列Yn,n∈[1,T2],将随机数序列Yn中的前L(Yn)-1个随机数依次输入训练好的循环神经网络模型R中,基于训练好的循环神经网络预测随机数序列Yn中的最后一个随机数。例如,经过预测,得到预测的结果pn,pn即为循环神经网络模型R所预测的、随机数序列Yn中的最后一个随机数的最有可能的结果。

在该实施例中,基于随机数序列中除最后一个随机数以外的所有随机数来预测最后一个随机数,实现简单,易于统计结果,使得后面将描述的步骤S240的操作也更为简单,且结果可靠。当然,步骤S230中所进行的预测也可以采用其他的方式,本发明不限定具体输入到训练好的循环神经网络的随机数的个数和需要预测的随机数的个数,也不限定它们两者之间的关系。

在步骤S240,根据所述预测的结果判定所述随机数生成器的质量。

在一个实施例中,步骤S240可以进一步包括:对于所述其余随机数序列中的每一个随机数序列,确定所述训练好的循环神经网络对该随机数序列中需预测的随机数的预测结果是否错误;以及基于所述训练好的循环神经网络预测错误的次数和所述其余随机数序列的个数计算所述训练好的循环神经网络进行预测的错误率,以作为所述随机数生成器的质量评估结果。

例如,接着上面的示例,对于S2中的每一个随机数序列Yn,可以将模型R所预测的结果pn与Yn中的最后一个随机数进行比对,若二者相等,则确定为预测正确,否则确定为预测错误。然后统计对于T2个随机数序列,模型R预测错误的次数E,可计算模型预测错误的概率δ'=E/T2,该错误率可以作为随机数生成器G的质量评估结果。

类似地,也可以统计对于T2个随机数序列,模型R预测正确的次数C,则模型R预测正确的概率为δ=C/T2,可将随机数生成器G的质量定义为:Ψ(G)=1-δ,则可将Ψ(G)返回,作为随机数生成器G的质量评估结果。

如上所述,步骤S230中所进行的预测也可以采用其他的方式,基于步骤S230中所采用的预测方式的不同,步骤S240中可以采用相应的方式来判定随机数生成器的质量,本发明也不限定根据预测结果判定随机数生成器的质量的具体方式。总之,如果循环神经网络可以以较高的概率根据已知序列预测接下来的随机数,则说明随机数生成器的质量较低;反之,则说明随机数生成器的质量较高。

基于上面的描述,根据本发明实施例的评估随机数生成器质量的方法基于循环神经网络对随机数生成器所产生的随机数序列的相关性进行建模,从而可以利用循环神经网络对随机数序列的相关性进行估计,实现客观、有效地评估随机数生成器的质量,不仅精度高,而且可扩展性强,能够作为比较、选取和设计随机数生成器的参考依据,对于文件加密和数据传输等领域具有重要的价值。

示例性地,根据本发明实施例的评估随机数生成器质量的方法可以在具有存储器和处理器的设备、装置或者系统中实现。

根据本发明实施例的评估随机数生成器质量的方法可以部署在个人终端处,诸如智能电话、平板电脑、个人计算机等。替代地,根据本发明实施例的评估随机数生成器质量的方法还可以部署在服务器端(或云端)。替代地,根据本发明实施例的评估随机数生成器质量的方法还可以分布地部署在服务器端(或云端)和个人终端处。

下面结合图3描述本发明另一方面提供的评估随机数生成器质量的装置。图3示出了根据本发明实施例的评估随机数生成器质量的装置300的示意性框图。

如图3所示,根据本发明实施例的评估随机数生成器质量的装置300包括神经网络训练模块310、随机数预测模块320以及质量判定模块330。所述各个模块可分别执行上文中结合图2描述的评估随机数生成器质量的方法的各个步骤/功能。以下仅对评估随机数生成器质量的装置300的各单元的主要功能进行描述,而省略以上已经描述过的细节内容。

神经网络训练模块310用于将待评估的随机数生成器产生的多个随机数序列中的部分随机数序列输入至循环神经网络,以对所述循环神经网络进行训练。随机数预测模块320用于利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测。质量判定模块330用于根据所述随机数预测模块的预测结果判定所述随机数生成器的质量。神经网络训练模块310、随机数预测模块320以及质量判定模块330均可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现。

在一个实施例中,假设待评估的随机数生成器为G。随机数生成器G所产生的随机数为伪随机数,但按照行业惯例,下文中还是称为随机数。随机数生成器G所产生的随机数可以是随机整数,也可以是浮点数。为了简单,下面以随机整数为例来描述。。

在一个示例中,随机数生成器G所产生的随机数的取值范围为[0,M]。示例性地,M为正整数,例如M的取值可以为32767、65535或其他任何合适的数值。每次调用G,会得到一个位于区间[0,M]内的随机数;连续多次调用G,则会得到一个随机数序列。因此,可以通过调用G,构造多个随机数序列。

应了解,本发明不受具体采用的随机数生成器的限制,无论是现有的随机数生成器还是将来开发的随机数生成器,都可以应用于根据本发明实施例的评估随机数生成器质量的装置中,并且也应包括在本发明的保护范围内。

如上所述,神经网络训练模块310可以采用随机数生成器为G所产生的多个随机数序列中的部分随机数序列用于对循环网络进行训练,而随机数生成器为G所产生的多个随机数序列中除该部分随机数序列以外的其他随机数序列用于由随机数预测模块320采用用于对随机数进行预测。

在一个示例中,可以利用待评估的随机数生成器产生两组随机数序列,每组随机数序列包括一定数目的随机数序列。对于这两组随机数序列,其中的一组随机数序列(即前述的多个随机数序列中的部分随机数序列)可以由神经网络训练模块310使用,以用于对循环神经网络的训练,另一组随机数序列(即多个随机数序列中除所述部分随机数序列以外的其余随机数序列)可以由随机数预测模块320采用,以用于对随机数进行预测。

在一个示例中,用于训练循环神经网络的随机数序列的个数可以大于用于后续预测的随机数序列的个数,这样,采用更多的随机数序列进行训练可提高所训练出的模型的精确度。此外,用于训练循环神经网络的随机数序列的具体个数可以结合训练需要、计算复杂度、计算性能等各种因素而设置,用于后续预测的随机数序列的个数可以根据对随机数生成器的质量评估精度需求等因素而设置,本发明对这两部分随机数序列的具体个数不作限定,也不限定这两者之间的关系。

接着上面的示例,可以通过调用待评估的随机数生成器G产生第一组随机数序列S1,有其中T1为S1中随机数序列的数目。在一个示例中,T1的典型值为106。在其他示例中,T1也可以选取其他合适的值。Χm,m∈[1,T1]代表该组随机数序列S1中的一个随机数序列。L(Χm)为随机数序列Χm的序列长度,即随机数序列Χm中所包括的随机数的个数。在一个示例中,L(Χm)可以与待评估的随机数生成器G产生的随机数的取值范围相关。例如,L(Χm)是区间内的随机整数,其中符号代表下取整操作。在其他示例中,L(Χm)也可以取任何其他合适的值。

同样地,可以通过调用待评估的随机数生成器G产生第二组随机数序列S2,有S2={Y1,Y2,...,YT2},其中T2为S2中随机数序列的数目。例如,T2的典型值为105。在其他示例中,T2也可以选取其他合适的值。Yn,n∈[1,T2]代表该组随机数序列S2中的一个随机数序列。L(Yn)为随机数序列Yn的序列长度,即随机数序列Yn中所包括的随机数的个数。在一个示例中,L(Yn)可以与待评估的随机数生成器G产生的随机数的取值范围相关。例如,L(Yn)是区间内的随机整数,其中符号代表下取整操作。在其他示例中,L(Yn)也可以取任何其他合适的值。

如上所述,神经网络训练模块310可以将上述第一组随机数序列S1输入至循环神经网络,以对所述循环神经网络进行训练。其中,对循环神经网络的训练可以包括对循环神经网络结构的设计、以及对设计好的循环神经网络的训练。下面示例性地描述循环神经网络的设计和训练过程。

在一个示例中,首先设计循环神经网络的结构。示例性地,循环神经网络可以包括若干数目的网络层数(例如4层或其他合适数目的网络层)。示例性地,循环神经网络可以采用长短时记忆(Long-Short Term Memory,LSTM)作为基本单元。在一个示例中,循环神经网络可包括一定数目的隐含层节点(例如512或其他合适数目)。此外,在一个示例中,为了防止模型过拟合,可对于每一隐含层可执行一定概率(例如0.5或其他合适的概率)的丢弃(dropout)操作。上面仅示例性地描述了循环神经网络的结构,还可以采用任何其他合适的结构。

然后,将上述第一组随机数序列S1输入至设计好的循环神经网络。在训练过程中,示例性地,每一次迭代时从S1中随机选取一个序列送入循环神经网络,示例性地,训练过程迭代次2T1后终止,最终得到模型R。

利用训练好的循环神经网络,随机数预测模块320对上述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测。在一个实施例中,随机数预测模块320可以进一步用于:对于所述其余随机数序列中的每一个随机数序列:将该随机数序列中的前N-1个随机数输入至所述训练好的循环神经网络,其中N为该随机数序列中随机数的数目,且N为大于1的自然数;以及基于所述训练好的循环神经网络预测该随机数序列中的最后一个随机数。

例如,接着上面的示例,随机数预测模块320可以利用训练好的循环神经网络对上述第二组随机数序列S2中的部分随机数进行预测。示例性地,随机数预测模块320进行的预测过程可以包括:对于S2中的每一个随机数序列Yn,n∈[1,T2],将随机数序列Yn中的前L(Yn)-1个随机数依次输入训练好的循环神经网络模型R中,基于训练好的循环神经网络预测随机数序列Yn中的最后一个随机数。例如,经过预测,得到预测的结果pn,pn即为循环神经网络模型R所预测的、随机数序列Yn中的最后一个随机数的最有可能的结果。

在该实施例中,随机数预测模块320基于随机数序列中除最后一个随机数以外的所有随机数来预测最后一个随机数,实现简单,易于统计结果,使得后面质量判定模块330的操作也更为简单,且结果可靠。当然,随机数预测模块320所进行的预测也可以采用其他的方式,本发明不限定具体输入到训练好的循环神经网络的随机数的个数和需要预测的随机数的个数,也不限定它们两者之间的关系。

质量判定模块330根据随机数预测模块320预测的结果判定所述随机数生成器的质量。在一个实施例中,质量判定模块330可以进一步用于:对于所述其余随机数序列中的每一个随机数序列,确定所述训练好的循环神经网络对该随机数序列中需预测的随机数的预测结果是否错误;以及基于所述训练好的循环神经网络预测错误的次数和所述其余随机数序列的个数计算所述训练好的循环神经网络进行预测的错误率,以作为所述随机数生成器的质量评估结果。

例如,接着上面的示例,质量判定模块330对于S2中的每一个随机数序列Yn,可以将模型R所预测的结果pn与Yn中的最后一个随机数进行比对,若二者相等,则确定为预测正确,否则确定为预测错误。然后质量判定模块330统计对于T2个随机数序列,模型R预测错误的次数E,可计算模型预测错误的概率δ'=E/T2,该错误率可以作为随机数生成器G的质量评估结果。

类似地,质量判定模块330也可以统计对于T2个随机数序列,模型R预测正确的次数C,则模型R预测正确的概率为δ=C/T2,可将随机数生成器G的质量定义为:Ψ(G)=1-δ,则质量判定模块330可将Ψ(G)返回,作为随机数生成器G的质量评估结果。

如上所述,随机数预测模块320所进行的预测也可以采用其他的方式,基于随机数预测模块320所采用的预测方式的不同,质量判定模块330可以采用相应的方式来判定随机数生成器的质量,本发明也不限定质量判定模块330根据预测结果判定随机数生成器的质量的具体方式。总之,如果循环神经网络可以以较高的概率根据已知序列预测接下来的随机数,则说明随机数生成器的质量较低;反之,则说明随机数生成器的质量较高。

基于上面的描述,根据本发明实施例的评估随机数生成器质量的装置基于循环神经网络对随机数生成器所产生的随机数序列的相关性进行建模,从而可以利用循环神经网络对随机数序列的相关性进行估计,实现客观、有效地评估随机数生成器的质量,不仅精度高,而且可扩展性强,能够作为比较、选取和设计随机数生成器的参考依据,对于文件加密和数据传输等领域具有重要的价值。

图4示出了根据本发明实施例的评估随机数生成器质量的系统400的示意性框图。评估随机数生成器质量的系统400包括存储装置410以及处理器420。

其中,存储装置410存储用于实现根据本发明实施例的评估随机数生成器质量的方法中的相应步骤的程序代码。处理器420用于运行存储装置410中存储的程序代码,以执行根据本发明实施例的评估随机数生成器质量的方法的相应步骤,并且用于实现根据本发明实施例的评估随机数生成器质量的装置中的相应模块。

在一个实施例中,在所述程序代码被处理器420运行时使得评估随机数生成器质量的系统400执行以下步骤:利用待评估的随机数生成器产生多个随机数序列;将所述多个随机数序列中的部分随机数序列输入至循环神经网络,以对所述循环神经网络进行训练;利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测;以及根据所述预测的结果判定所述随机数生成器的质量。

在一个示例中,所述利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测包括:对于所述其余随机数序列中的每一个随机数序列:将该随机数序列中的前N-1个随机数输入至所述训练好的循环神经网络,其中N为该随机数序列中随机数的数目,且N为大于1的自然数;以及基于所述训练好的循环神经网络预测该随机数序列中的最后一个随机数。

在一个示例中,所述根据所述预测的结果判定所述随机数生成器的质量包括:对于所述其余随机数序列中的每一个随机数序列,确定所述训练好的循环神经网络对该随机数序列中需预测的随机数的预测结果是否错误;以及基于所述训练好的循环神经网络预测错误的次数和所述其余随机数序列的个数计算所述训练好的循环神经网络进行预测的错误率,以作为所述随机数生成器的质量评估结果。

在一个示例中,所述待评估的随机数生成器产生的多个随机数序列各自的序列长度不同。

在一个示例中,所述部分随机数序列的个数大于所述其余随机数序列的个数。

在一个示例中,所述循环神经网络为长短时记忆网络。

此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的评估随机数生成器质量的方法的相应步骤,并且用于实现根据本发明实施例的评估随机数生成器质量的装置中的相应模块。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合,例如一个计算机可读存储介质包含产生随机数序列的计算机可读的程序代码,另一个计算机可读存储介质包含训练循环神经网络的计算机可读的程序代码,又一个计算机可读存储介质包含预测随机数的计算机可读的程序代码,再一个计算机可读存储介质包含判定随机数生成器质量的计算机可读的程序代码。

在一个实施例中,所述计算机程序指令在被计算机运行时可以实现根据本发明实施例的评估随机数生成器质量的装置的各个功能模块,并且/或者可以执行根据本发明实施例的评估随机数生成器质量的方法。

在一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行以下步骤:利用待评估的随机数生成器产生多个随机数序列;将所述多个随机数序列中的部分随机数序列输入至循环神经网络,以对所述循环神经网络进行训练;利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测;以及根据所述预测的结果判定所述随机数生成器的质量。

在一个示例中,所述利用训练好的循环神经网络对所述多个随机数序列中除所述部分随机数序列以外的其余随机数序列中的部分随机数进行预测包括:对于所述其余随机数序列中的每一个随机数序列:将该随机数序列中的前N-1个随机数输入至所述训练好的循环神经网络,其中N为该随机数序列中随机数的数目,且N为大于1的自然数;以及基于所述训练好的循环神经网络预测该随机数序列中的最后一个随机数。

在一个示例中,所述根据所述预测的结果判定所述随机数生成器的质量包括:对于所述其余随机数序列中的每一个随机数序列,确定所述训练好的循环神经网络对该随机数序列中需预测的随机数的预测结果是否错误;以及基于所述训练好的循环神经网络预测错误的次数和所述其余随机数序列的个数计算所述训练好的循环神经网络进行预测的错误率,以作为所述随机数生成器的质量评估结果。

在一个示例中,所述待评估的随机数生成器产生的多个随机数序列各自的序列长度不同。

在一个示例中,所述部分随机数序列的个数大于所述其余随机数序列的个数。

在一个示例中,所述循环神经网络为长短时记忆网络。

根据本发明实施例的评估随机数生成器质量的装置中的各模块可以通过实现根据本发明实施例的评估随机数生成器质量的方法和装置的示例电子设备的处理器运行在存储器中存储的计算机程序指令来实现,或者可以在根据本发明实施例的计算机程序产品的计算机可读存储介质中存储的计算机指令被计算机运行时实现。

根据本发明实施例的评估随机数生成器质量的方法、装置、系统以及存储介质基于循环神经网络对随机数生成器所产生的随机数序列的相关性进行建模,从而可以利用循环神经网络对随机数序列的相关性进行估计,实现客观、有效地评估随机数生成器的质量,不仅精度高,而且可扩展性强,能够作为比较、选取和设计随机数生成器的参考依据,对于文件加密和数据传输等领域具有重要的价值。

尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的物品分析设备中的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1