随机数生成器及随机数生成方法与流程

文档序号:28347008发布日期:2022-01-05 11:03阅读:890来源:国知局
随机数生成器及随机数生成方法与流程

1.本说明书一个或多个实施例涉及计算机领域,尤其涉及一种随机数生成器及随机数生成方法。


背景技术:

2.安全多方计算(multi

party computation,mpc)及机器学习(machine learning,ml)等技术场景中往往需要使用到大量的随机数。通常可以使用物理随机信号产生由0和1组成的随机数流;然后按照实际业务需求从该随机数流中选择长度为n的比特序列,并将该比特序列表征的数据作为随机数,该随机数则在区间[0,2
n

1]内均匀分布且精度为1。
[0003]
希望有一种新的技术方案,以期能够获取在指定区间内均匀分布的随机数。


技术实现要素:

[0004]
本说明书一个或多个实施例中提供了一种随机数生成器及随机数生成方法。
[0005]
第一方面,提供了一种随机数生成器,包括:
[0006]
参数获取模块,配置为获取指定区间内允许的第一随机数的第一数量;
[0007]
数据采样模块,配置为从随机数流中获取比特序列,其中2
n
不小于所述第一数量,n表征所述比特序列的长度;
[0008]
判断处理模块,配置为确定所述比特序列表征的当前数据是否为可用随机数,其中所述当前数据为可用随机数时,对2
n
与所述第一数量的商向下取整,向下取整的结果与所述第一数量的乘积不小于所述当前数据;
[0009]
运算处理模块,配置为当所述当前数据为可用随机数时,根据所述指定区间的下限值和所述当前数据生成在所述指定区间内均匀分布的第一随机数。
[0010]
在一种可能的实施方式中,所述指定区间的上限值和下限值均为整数,所述指定区间内允许的第一随机数均为整数。
[0011]
在一种可能的实施方式中,2
n
与所述第一数量的商小于2;
[0012]
所述判断处理模块为判别器,用于判断所述当前数据是否小于所述第一数量;
[0013]
所述运算处理模块为加法器,用于在所述当前数据小于所述第一数量的情况下,对所述指定区间的下限值和所述当前数据进行求和运算以获得第一随机数。
[0014]
在一种可能的实施方式中,2
n
与所述第一数量的商不小于2;
[0015]
所述判断处理模块包括第二运算单元和判别器;其中,所述第二运算单元用于对2
n
与所述第一数量的商向下取整,将向下取整的结果与所述第一数量的乘积作为参考值;所述判别器用于判断所述当前数据是否小于所述参考值,如果是则触发所述运算处理模块;
[0016]
所述运算处理模块包括第三运算单元和加法器;其中,所述第三运算单元配置为响应于所述判别器的触发,利用所述第一数量对所述当前数据进行取余,将获得的余数输出;所述加法器配置为对所述余数和所述指定区间的下限值进行求和运算以获得第一随机
数。
[0017]
在一种可能的实施方式中,随机数流基于若干组物理随机信号产生。
[0018]
第二方面,提供了一种随机数生成方法,包括:
[0019]
确定指定区间内允许的第一随机数的第一数量;
[0020]
从随机数流中获取比特序列,其中2
n
不小于所述第一数量,n表征所述比特序列的长度;
[0021]
根据所述第一数量确定所述比特序列表征的当前数据是否为可用随机数,其中所述当前数据为可用随机数时,对2
n
与所述第一数量的商向下取整,向下取整的结果与所述第一数量的乘积不小于所述当前数据,n表征所述比特序列的长度;
[0022]
当所述当前数据为可用随机数时,根据所述指定区间的下限值和所述当前数据生成在所述指定区间内均匀分布的第一随机数。
[0023]
在一种可能的实施方式中,所述指定区间的上限值和下限值均为整数,所述指定区间内允许的第一随机数均为整数。
[0024]
在一种可能的实施方式中,2
n
与所述第一数量的商小于2;
[0025]
所述根据所述第一数量确定所述比特序列表征的当前数据是否为可用随机数,包括:当所述当前数据小于所述第一数量时,确定所述当前数据为可用随机数;
[0026]
所述根据所述指定区间的下限值和所述当前数据生成在所述指定区间内均匀分布的第一随机数,包括:对所述指定区间的下限值和所述当前数据进行求和运算以获得第一随机数。
[0027]
在一种可能的实施方式中,2
n
与所述第一数量的商不小于2;
[0028]
所述根据所述第一数量确定所述比特序列表征的当前数据是否为可用随机数,包括:对2
n
与所述第一数量的商向下取整,将向下取整的结果与所述第一数量的乘积作为参考值;当所述当前数据小于所述参考值时,确定所述当前数据为可用随机数;
[0029]
所述根据所述指定区间的下限值和所述当前数据生成在所述指定区间内均匀分布的第一随机数,包括:利用所述第一数量对所述当前数据进行取余,对获得的余数和所述指定区间的下限值进行求和运算以获得第一随机数。
[0030]
在一种可能的实施方式中,随机数流基于若干组物理随机信号产生。
[0031]
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序/指令,当所述计算机程序在计算设备中执行时,计算设备执行第二方面中任一项所述的方法。
[0032]
第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序/指令,所述处理器执行所述计算机程序/指令时,实现第二方面中任一项所述的方法。
[0033]
通过本说明书一个或多个实施例中提供的随机数生成器及随机数生成方法,可用根据指定区间内允许的第一随机数的第一数量,从随机数流中获取长度为n且2
n
不小于第一数量的比特序列,当对2
n
与第一数量的商向下取整,且向下取整的结果与第一数量的乘积不小于该比特序列表征的当前数据时,该当前数据即可作为用于生成第一随机数的可用随机数时,进而可用根据该当前数据和指定区间的下限值生成在该指定区间内均匀分布的第一随机数。
附图说明
[0034]
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0035]
图1为本说明书实施例中提供的基于物理随机信号生成随机数的示意图;
[0036]
图2为本说明书实施例中提供的一种随机数生成器的示意图;
[0037]
图3为本说明书实施例中提供的一种随机数生成方法的流程图。
具体实施方式
[0038]
下面结合附图,对本说明书所提供的各个非限制性实施例进行详细描述。
[0039]
请参考图1,可以使用物理随机信号产生由0和1组成的随机数流;例如可以通过多个能够持续发光的光源阵列,产生相互独立的多组物理随机信号,单组物理随机信号例如可以包括但不限于光照强度信号和/或电磁辐射信号;接着对多组物理随机信号进行融合处理,对融合处理后的物理信号进行扰码,最终输出由0和1组成的随机数流。此外还可以由伪随机数生成器/确定性随机比特生成器基于相应的随机种子产生由0和1组成的随机数流。当需要生成随机数时,可以从随机数流中选择长度为n的比特序列,该比特序列表征的数据即可作为在区间[0,2
n

1]内均匀分布且精度为1的随机数k1。
[0040]
然而在部分业务场景中,可能期望获得在指定区间[a,b]内均匀分布的随机数,其中下限值a和上限值b均为有符号整数,a可能不等于0,b可能不等于2
n

1,且期望获得的随机数是区间[a,b]内精度为1的离散值。例如在安全多方计算或者机器学习等技术场景中可能随机数,为了节约计算量或满足特定的约束条件,可能期望生成在指定区间[

3,3]内均匀分布的随机数;又如在随机预定会议日期的场景中,允许的会议日期包括某年某月的11日

31日,此时可能期望生成在指定区间[11,31]内均匀分布的随机数;再如学校通过计算机实现按照学生的学号随机抽取学生进行论文答辩的技术场景中,可能期望生成在各个学号对应的指定区间内均匀分布的随机数。
[0041]
本说明书实施例中至少提供了一种随机数生成器及随机数生成方法,可以获得在指定区间内均匀分布且精度为1的随机数。
[0042]
图2为本说明书实施例中提供的一种随机数生成器的示意图。该随机数生成器可以用硬件、软件或硬件与软件相结合的方式实现。其中需要特别说明的是,当使用软件实现时,具体可以将用于实现该随机数生成器的计算机程序存储在计算机可读介质中,并且允许该随机数生成器的计算机程序按照其对应的指令序列进行传输,以便用于实现该随机数生成器的计算机程序被计算设备执行时,由计算设备来实现本说明书任意一个实施例中提供的随机数生成器的功能,即由计算设备来执行本说明书任意一个实施例中提供的随机数生成方法。此外当使用硬件或者硬件与软件相结合的方式实现时,具体可以将该随机数生成器的功能所对应的部分或全部功能模块,独立的或者相互结合的实现为分立器件、包含分立器件的电路、由电路和芯片集成的组件,其中芯片可以独立的使用软件程序来实现特定的功能。
[0043]
如图2所示,该随机数生成器至少可以包括:参数获取模块201,配置为获取指定区
间内允许的第一随机数的第一数量;数据采样模块203,配置为从随机数流中获取比特序列,其中2
n
不小于第一数量,n表征比特序列的长度;判断处理模块205,配置为确定比特序列表征的当前数据是否为可用随机数,其中当前数据为可用随机数时,对2
n
与第一数量的商向下取整,向下取整的结果与第一数量的乘积不小于当前数据;运算处理模块207,配置为在该当前数据为可用随机数时,根据指定区间的下限值和当前数据生成在指定区间内均匀分布的第一随机数。
[0044]
下文中为了方便描述,继续利用区间[a,b]表征指定区间,区间[a,b]的上限值b和下限值a均为有符号整数,区间[a,b]内允许的第一随机数均为整数,即需要生成的第一随机数为在区间[a,b]内均匀分布且精度为1的整数。与之相应的,区间[a,b]内允许的第一随机数的第一数量则可表述为b

a+1。此外下文中还将继续利用k1表示从随机数流中获取的比特序列所表征的当前数据。
[0045]
在一种可能的实施方式中,数据采样模块203包括第一运算单元和数据采样单元。其中第一运算单元配置为根据b

a+1确定待获取的比特序列的长度n,2
n
不小于b

a+1。具体地,可以以2
n
大于或等于b

a+1作为约束条件确定n满足的取值范围,然后在确定的取值范围中提取单个整数作为待获取的比特序列的长度n;此外还可以通过对以2为底b

a+1的对数进行向上取整,获得待获取的比特序列的长度n。数据采样单元配置为从随机数流中获取长度为n的比特序列,并将该比特序列表征的数据作为当前数据k1。
[0046]
依赖于前述数据采样模块203获得长度n的方式的不同,2
n
与b

a+1的商可以被划分为两种情况,即划分为2
n
与b

a+1的商小于2或者不小于2。针对前述两种情况,可以分别配置不同的判断处理模块205来实现确定当前数据k1是否为可用随机数,分别配置不同的运算处理模块207来实现生成第一随机数。
[0047]
当2
n
与b

a+1的商小于2时,判断处理模块205可以为判别器,用于判断当前数据k1是否小于b

a+1;其中当前数据k1小于b

a+1则说明当前数据k1为能够用于生成第一随机数的可用随机数,反之则说明当前数据k1并非可用随机数。运算处理模块207可以为加法器,用于在当前数据k1小于b

a+1的情况下,即当前数据k1为可用随机数的情况下,对区间[a,b]的下限值a和随机数k1进行求和运算以获得第一随机数。
[0048]
需要特别说明的是,由于当前数据k1在区间[0,2
n

1]内均匀分布,b

a大于0且小于或等于2
n

1,当前数据k1小于b

a+1时意味着当前数据k1必然在区间[0,b

a]内均匀分布;与之相应的,请继续参照图1,区间[a,b]实质上是在精度为1的数轴上将区间[0,b

a]向右平移a个单位,对区间[a,b]的下限值a和当前数据k1求和以获得的第一随机数a+k1则必然在区间[a,b]内均匀分布。
[0049]
当2
n
与b

a+1的商不小于2时,判断处理模块205包括第二运算单元和判别器;其中第二运算单元用于对2
n
与b

a+1的商向下取整,将向下取整的结果与b

a+1的乘积作为参考值max;判别器用于判断当前数据k1是否小于参考值max,如果是则说明当前数据k1为能够用于生成第一随机数的可用随机数,判别器可触发运算处理模块207。相应的,运算处理模块207包括第三运算单元和加法器;其中第三运算单元配置为响应于判别器的触发,利用b

a+1对当前数据k1进行取余,将获得的余数k2输出;加法器配置为对余数k2和区间[a,b]的下限值a进行求和运算以获得第一随机数。
[0050]
需要特别说明的是,由于当前数据k1在区间[0,2
n

1]内均匀分布,参考值max大于
0且小于2
n

1,当前数据k1小于参考值max时意味着当前数据k1在区间[0,max

1]内均匀分布。与之相应的,由于参考值max与b

a+1的商必然是整数,意味着当前数据k1与b

a+1的余数k2必然在[0,b

a]内均匀分布,区间[a,b]是在精度为1的数轴上将区间[0,b

a]向右平移a个单位,对区间[a,b]的下限值a和余数k2求和以获得的第一随机数a+k2则必然在区间[a,b]内均匀分布。
[0051]
与前述随机数生成器基于相同的构思,本说明书实施例中还提供了一种随机数生成方法。如图3所示,该方法至少可以包括如下步骤301

步骤307。
[0052]
步骤301,确定指定区间内允许的第一随机数的第一数量。
[0053]
步骤303,从随机数流中获取比特序列。其中可以首先根据第一数量确定待获取的比特序列的长度n,2
n
不小于第一数量;然后从随机数流中获取长度为n的比特序列,其中该比特序列表征的当前数据可能为能够用于生成在指定区间内均匀分布的可用随机数。
[0054]
步骤305,确定当前数据是否为可用随机数。其中当前数据为能够用于生成第一随机数的可用随机数时,对2
n
与第一数量的商向下取整,向下取整的结果与第一数量的乘积不小于当前数据。
[0055]
步骤307,当所述当前数据为可用随机数时,根据指定区间的下限值和当前数据生成在所述指定区间内均匀分布的第一随机数。
[0056]
在一种可能的实施方式中,当2
n
与第一数量的商小于2时,步骤305中具体可以在当前数据小于第一数量时,确定当前数据为可用随机数。步骤307中具体可以在当前数据为可用随机数时,对指定区间的下限值和当前数据进行求和运算以获得第一随机数。
[0057]
在另一种可能的实施方式中,当2
n
与第一数量的商不小于2时,步骤305中具体可以对2
n
与第一数量的商向下取整,将向下取整的结果与第一数量的乘积作为参考值;在当前数据小于参考值时确定当前数据为可用随机数。步骤307中具体可以在当前数据为可用随机数时,利用第一数量对当前数据进行取余,对获得的余数和指定区间的下限值进行求和运算以获得第一随机数。
[0058]
本说明书实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,当所述计算机程序/指令在计算设备中执行时,计算设备执行本说明书任意一个实施例中提供的随机数生成方法。
[0059]
本说明书实施例中还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序/指令,所述处理器执行所述计算机程序/指令时,实现本说明书任意一个实施例中提供的随机数生成方法。
[0060]
本说明书中的各个实施例均采用递进的方式描述,各个实施例中相同、相似的部分互相参见即可,每个实施例中重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置实施例中提供的随机数生成器的功能,所以对方法实施例描述的比较简单,相关之处参见装置实施例中的描述即可。
[0061]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0062]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1