CN111427540A - 随机数的生成方法、装置、电子设备和存储介质 - Google Patents
随机数的生成方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111427540A CN111427540A CN202010214820.6A CN202010214820A CN111427540A CN 111427540 A CN111427540 A CN 111427540A CN 202010214820 A CN202010214820 A CN 202010214820A CN 111427540 A CN111427540 A CN 111427540A
- Authority
- CN
- China
- Prior art keywords
- numbers
- random
- generating
- digits
- random number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000004891 communication Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004422 calculation algorithm Methods 0.000 abstract description 17
- 238000004904 shortening Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
Abstract
本发明实施例提供了一种随机数的生成方法、装置、电子设备和存储介质,其中,所述方法包括:获取第一数字集合和第二数字集合;在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数;在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数。本发明实施例可以适应适应已选数字的数据量较多时和较少时,或者,剩余可选数字的数据量较多时和较少时的随机数生成场景,可以解决现有的随机数生成算法生成随机数的时间较长的技术问题,从而在整体上提高了随机数生成算法的性能,缩短生成随机数的时间。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种随机数的生成方法、装置,以及一种电子设备和一种计算机可读存储介质。
背景技术
目前,在从千万级数据量的可选数字中多次随机挑选出不重复的数字时,首先需要对每次随机获取的数字做顺序缓存,然后每次新增的数字需要顺序插入已存储的数字之间。每次随机获取数字时还必须从可选数字池中过滤掉已选数字。当数量级接近千万的多次计算同时进行时,内存消耗巨大,计算速度也会不稳定。
现有的生成随机数的算法中,一部分算法在已选数字的数据量较少或剩余可选数字的数据量较多时表现良好,但已选数字的数据量较多或剩余可选数字的数据量较少时耗时极长。另一部分算法在已选数字的数据量较多或剩余可选数字的数据量较少时表现良好,但已选数字的数据量较少或剩余可选数字的数据量较多时耗时极长。
因此,目前不存在一种算法可以同时适应已选数字的数据量较多或剩余可选数字的数据量较少时,或者,剩余可选数字的数据量较多或已选数字的数据量较少时的随机数生成场景。
发明内容
本发明实施例的目的在于提供一种随机数的生成方法、装置,以及一种电子设备和一种计算机可读存储介质,以实现同时适应已选数字的数据量较多或剩余可选数字的数据量较少时,或者,剩余可选数字的数据量较多或已选数字的数据量较少时的随机数生成场景,避免生成随机数的时间较长的问题。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种随机数的生成方法,包括:获取第一数字集合和第二数字集合;在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数;在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数。
可选地,所述在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数,包括:在所述第一数字集合满足包含的数字数量大于第一数量阈值、包含的数字数量属于第一数量范围和包含的数字数量的数量级大于第一数量级阈值中的至少之一时,按照所述第二方式根据所述第一数字集合和所述第二数字集合生成所述第二随机数。
可选地,所述按照所述第二方式根据所述第一数字集合和所述第二数字集合生成所述第二随机数,包括:按照如下步骤循环执行第一次数,所述第一次数为所述第二随机数的数字数量与第二数量阈值的比值的向上取整值,所述第二数量阈值小于所述第二随机数的数字数量:步骤01:创建第三数字集合;步骤02:循环执行以下子步骤直至所述第三数字集合中的数字数量大于或等于第三数量阈值,所述第三数量阈值为所述第二数量阈值和所述第二随机数中未生成的随机数的数量的最小值:子步骤021:从所述第一数字集合中随机选择一个第二已选数字;子步骤022:若所述第三数字集合中存在所述第二已选数字,则再次从所述第一数字集合中随机选择一个第二已选数字;若所述第三数字集合中不存在所述第二已选数字,则将所述第二已选数字存储至所述第二数字集合的末尾;步骤03:从所述第一数字集合中批量删除所述第三数字集合;按照从后向前的顺序,从所述第二数字集合中提取出所述第二随机数的数字数量的数字,并将提取出的所述数字作为所述第二随机数。
可选地,所述在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数,包括:在所述第一数字集合满足包含的数字数量小于或等于所述第一数量阈值、包含的数字数量属于第二数量范围和包含的数字数量的数量级小于或等于所述第一数量级阈值中的至少之一时,按照所述第一方式根据所述第一数字集合和所述第二数字集合生成所述第一随机数,所述第二数量范围的最大值小于所述第一数量范围的最小值。
可选地,所述按照所述第一方式根据所述第一数字集合和所述第二数字集合生成所述第一随机数,包括:按照如下步骤循环执行第二次数,所述第二次数为所述第一随机数的数字数量:步骤11:从所述第一数字集合中随机选择一个第一已选数字;步骤12:将所述第一已选数字存储至所述第二数字集合的末尾;步骤13:从所述第一数字集合中删除所述第一已选数字;按照从后向前的顺序,从所述第二数字集合中提取出所述第一随机数的数字数量的数字,并将提取出的所述数字作为所述第一随机数。
可选地,在所述生成第一随机数或生成第二随机数之后,所述方法还包括:对所述第二数字集合进行归并排序,并将归并排序后的所述第二数字集合存入数据库中。
可选地,所述获取第二数字集合,包括:从所述数据库中读取所述第二数字集合。
在本发明实施的第二方面,还提供了一种随机数的生成装置,包括:获取模块,用于获取第一数字集合和第二数字集合;生成模块,用于在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数;所述生成模块,还用于在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数。
可选地,所述生成模块,用于在所述第一数字集合满足包含的数字数量大于第一数量阈值、包含的数字数量属于第一数量范围和包含的数字数量的数量级大于第一数量级阈值中的至少之一时,按照所述第二方式根据所述第一数字集合和所述第二数字集合生成所述第二随机数。
可选地,所述生成模块,包括:循环执行模块,用于按照如下步骤循环执行第一次数,所述第一次数为所述第二随机数的数字数量与第二数量阈值的比值的向上取整值,所述第二数量阈值小于所述第二随机数的数字数量:步骤01:创建第三数字集合;步骤02:循环执行以下子步骤直至所述第三数字集合中的数字数量大于或等于第三数量阈值,所述第三数量阈值为所述第二数量阈值和所述第二随机数中未生成的随机数的数量的最小值:子步骤021:从所述第一数字集合中随机选择一个第二已选数字;子步骤022:若所述第三数字集合中存在所述第二已选数字,则再次从所述第一数字集合中随机选择一个第二已选数字;若所述第三数字集合中不存在所述第二已选数字,则将所述第二已选数字存储至所述第二数字集合的末尾;步骤03:从所述第一数字集合中批量删除所述第三数字集合;数字提取模块,用于按照从后向前的顺序,从所述第二数字集合中提取出所述第二随机数的数字数量的数字,并将提取出的所述数字作为所述第二随机数。
可选地,所述生成模块,用于在所述第一数字集合满足包含的数字数量小于或等于所述第一数量阈值、包含的数字数量属于第二数量范围和包含的数字数量的数量级小于或等于所述第一数量级阈值中的至少之一时,按照所述第一方式根据所述第一数字集合和所述第二数字集合生成所述第一随机数,所述第二数量范围的最大值小于所述第一数量范围的最小值。
可选地,所述循环执行模块,还用于按照如下步骤循环执行第二次数,所述第二次数为所述第一随机数的数字数量:步骤11:从所述第一数字集合中随机选择一个第一已选数字;步骤12:将所述第一已选数字存储至所述第二数字集合的末尾;步骤13:从所述第一数字集合中删除所述第一已选数字;所述数字提取模块,用于按照从后向前的顺序,从所述第二数字集合中提取出所述第一随机数的数字数量的数字,并将提取出的所述数字作为所述第一随机数。
可选地,所述装置还包括:存储模块,用于在所述生成模块生成第一随机数或生成第二随机数之后,对所述第二数字集合进行归并排序,并将归并排序后的所述第二数字集合存入数据库中。
可选地,所述获取模块,用于从所述数据库中读取所述第二数字集合。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的随机数的生成方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的随机数的生成方法。
本发明实施例提供的随机数的生成方法,通过采用获取第一数字集合和第二数字集合;在第一数字集合满足第一条件时,按照预设的第一方式根据第一数字集合和第二数字集合生成第一随机数;在第一数字集合满足第二条件时,按照预设的第二方式根据第一数字集合和第二数字集合生成第二随机数的技术手段。在生成随机数的过程中,可以同时适应已选数字的数据量较多或剩余可选数字的数据量较少时,或者,剩余可选数字的数据量较多或已选数字的数据量较少时的随机数生成场景,可以解决现有的随机数生成算法生成随机数的时间较长的技术问题,从而在整体上提高了随机数生成算法的性能,缩短生成随机数的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例的一种随机数的生成方法的步骤流程图。
图2为本发明实施例的一种从千万级数量的可选数字中多次随机选择不重复数字的方法的步骤流程图。
图3为本发明实施例的一种随机数的生成装置的结构示意图。
图4为本发明实施例中一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
本发明实施例提出一种随机数的生成方法。第一方面,该随机数生成方法可以针对不同的条件采用不同的方式生成随机数,以便从整体上提高随机数生成的性能。第二方面,该随机数生成方法还可以支持生成多组随机数,将生成一组随机数之后的已选数字存储至硬盘中,利用硬盘空间远远大于内存空间的优势,降低对内存的占用。第三方面,该随机数生成方法可以在已选数字达到一定数量时,从可选数字中删除已选数字,减少从可选数字中删除已选数字的次数,以便从整体上提高随机数生成的性能,缩短随机数的生成时间。第四方面,在将生成一组随机数之后的已选数字存储至硬盘的过程中,采用归并排序的方式对已选数字进行排序,降低对已选数字进行排序的复杂度。
如图1所示,示出了本发明实施例的一种随机数的生成方法的步骤流程图。该随机数的生成方法具体可以包括如下步骤。
步骤101,获取第一数字集合和第二数字集合。
在本发明的实施例中,第一数字集合中可以包含一定数量级的可选数字,,在本发明实施例的执行过程中,可以从第一数字集合中随机选择可选数字。第二数字集合中可以包含一定数量级的已选数字,在本发明实施例的执行过程中,可以将从第一数字集合中随机选择的可选数字存入第二数字集合。第二数字集合也可以为空。
在本发明的实施例中,可以根据第一数字集合是否满足第一条件或者第二条件,选择执行步骤102或者步骤103。具体地,当第一数字集合满足第一条件时,执行步骤102;当第一数字集合满足第二条件时,执行步骤103。
步骤102,按照预设的第一方式根据第一数字集合和第二数字集合生成第一随机数。
在本发明的实施例中,当第一数字集合满足第一条件时,可以认为第一数字集合中包含的可选数字的数量相对较少时。例如,当第一数字集合中包含的可选数字的数量小于某一预设数量阈值时,可以认为第一数字集合中包含的可选数字的数量相对较少,此时,可以按照预设的第一方式从第一数字集合中随机选择数字,并将从第一数字集合中随机选择出的已选数字存入第二数字集合,最终生成第一随机数。
步骤103,按照预设的第二方式根据第一数字集合和第二数字集合生成第二随机数。
在本发明的实施例中,当第一数字集合满足第二条件时,可以认为第一数字集合中包含的可选数字的数量相对较多时。例如,当第一数字集合中包含的可选数字的数量大于或等于某一预设数量阈值时,可以认为第一数字集合中包含的可选数字的数量相对较多,此时,可以按照预设的第二方式从第一数字集合中随机选择数字,并将从第一数字集合中随机选择出的已选数字存入第二数字集合,最终生成第二随机数。
需要说明的是,第一数字集合中包含的可选数字的数量较多或者较少,仅是相对而言。而且,第一随机数和第二随机数可以作为第一数字集合满足不同条件时的随机数。
本发明实施例提供的随机数的生成方法,通过采用获取第一数字集合和第二数字集合;在第一数字集合满足第一条件时,按照预设的第一方式根据第一数字集合和第二数字集合生成第一随机数;在第一数字集合满足第二条件时,按照预设的第二方式根据第一数字集合和第二数字集合生成第二随机数的技术手段。在生成随机数的过程中,可以同时适应已选数字的数据量较多或剩余可选数字的数据量较少时,或者,剩余可选数字的数据量较多或已选数字的数据量较少时的随机数生成场景,可以解决现有的随机数生成算法生成随机数的时间较长的技术问题,从而在整体上提高了随机数生成算法的性能,缩短生成随机数的时间。
在本发明的一种示例性实施例中,在第一数字集合满足第一条件时,可以认为第一数字集合满足包含的数字数量小于或等于第一数量阈值、包含的数字数量属于第二数量范围和包含的数字数量的数量级小于或等于第一数量级阈值中的至少之一,例如,第一数量阈值可以设置为1000,第二数量范围可以设置为1000至2000,第一数量级阈值可以设置为1000,第一数量阈值、第二数量范围和第一数量级阈值的具体数值可以根据实际情况进行设定,本发明实施例对第一数量阈值、第二数量范围和第一数量级阈值的数值、单位等不做具体限制。
在第一数字集合满足第一条件时,可以按照预设的第一方式根据第一数字集合和第二数字集合生成第一随机数。
在实际应用中,在按照第一方式生成第一随机数时,可以先确定需要生成的第一随机数包含的数字数量n1(个),然后按照如下步骤(步骤11至步骤13)循环执行n1次:
步骤11:从第一数字集合中随机选择一个第一已选数字;
步骤12:将第一已选数字存储至第二数字集合的末尾;
步骤13:从第一数字集合中删除第一已选数字。
每执行一次步骤11至步骤13,可以为第一随机数选择出一个数字,当执行完n1次步骤11至步骤13时,可以为第一随机数选择出n1个数字,此时,第二数字集合中至少存在n1个数字。由于每次将从第一数字集合中随机选择的第一已选数字存入第二数字集合的末尾,所以可以从第二数字集合中提取出后n1个数字,作为第一随机数。
在本发明的一种示例性实施例中,在第一数字集合满足第二条件时,可以认为第一数字集合中包含的数字数量大于第一数量阈值、包含的数字数量属于第一数量范围和包含的数字数量的数量级大于第一数量级阈值中的至少之一,例如,第一数量阈值可以设置为1000,第一数量范围可以设置为3000至5000,第一数量级阈值可以设置为1000,第一数量阈值、第一数量范围和第一数量级阈值的具体数值可以根据实际情况进行设定,其中,第二数量范围的最大值可以小于第一数量范围的最小值,本发明实施例对第一数量阈值、第一数量范围和第一数量级阈值的数值、单位等不做具体限制。
在第一数字集合满足第二条件时,可以按照预设的第二方式根据第一数字集合和第二数字集合生成第二随机数。
在实际应用中,在按照第二方式生成第二随机数时,可以先确定需要生成的第二随机数包含的数字数量n2(个),然后按照如下步骤(步骤01至步骤03)循环执行第一次数,其中,第一次数可以为ceil[n2/p]次,即第一次数可以为n2与p的比值的向上取整值,p表示第二数量阈值,p小于n2:
步骤01:创建第三数字集合;
步骤02:循环执行以下子步骤直至第三数字集合中的数字数量大于或等于第三数量阈值,第三数量阈值为第二数量阈值和第二随机数中未生成的随机数的数量的最小值:
子步骤021:从第一数字集合中随机选择一个第二已选数字;
子步骤022:若第三数字集合中存在第二已选数字,则再次从第一数字集合中随机选择一个第二已选数字;若第三数字集合中不存在第二已选数字,则将第二已选数字存储至第二数字集合的末尾;
步骤03:从第一数字集合中批量删除第三数字集合。
每执行一次子步骤021至子步骤022,可以为第二随机数选择出一个数字,当第三数字集合中包含的数字数量大于或等于第三数量阈值时,为第二随机数选择出第三数量阈值的数字。相应地,第三数字集合中存储有第三数量阈值的数字,从第一数字集合中批量删除第三数字集合,即从第一数字集合中批量删除第三数量阈值的数字。由于将从第一数字集合中随机选择的第二已选数字存入第二数字集合的末尾,所以可以从第二数字集合中提取出后n2个数字,作为第二随机数。
在本发明的一种示例性实施例中,在从第二集合中提取出第一随机数或者第二随机数之后,可以对第二数字集合进行归并排序,并将归并排序后的第二数字集合序列化存入数据库中,留待下次生成随机数时继续使用。
在本发明的一种示例性实施例中,在获取第二数字集合时,可以从数据库中读取出第二数字集合。也就是说,本发明实施例可以支持生成多组随机数,生成一组随机数之后的第二数字集合可以存储在硬盘的数据库中,以便在生成下一组随机数时,重新从硬盘的数据库中读取出第二数字集合,继续生成下一组随机数。
如图2所示,示出了本发明实施例的一种从千万级数量的可选数字中多次随机选择不重复数字的方法的步骤流程图。该方法具体可以包括如下步骤。
步骤201,新建第一数字集合和第二数字集合。
在本发明的实施例中,第一数字集合可以为choosePool,第二数字集合可以为chosenNumber。在实际应用中,可以通过如下方式新建第一数字集合和第二数字集合:
List<Integer>choosePool=new ArrayList<>();//可选数字池
List<Integer>chosenNumber=new ArrayList<>();//已被选走的数字
步骤202,将初始化数字导入第一数字集合和第二数字集合。
在本发明的实施例中,可以从数据库中读取出已被选走的数字,将其导入第二数字集合,例如,一共有1千万的数字,将1千万的数字中已被选走的数字之外的数字导入第一数字集合。若已被选走的数字为空(即第一次生成随机数,无历史数据),则将1千万的数字全部导入第一数字集合。
步骤203,根据第一数字集合中包含的数字数量判断执行第一算法还是执行第二算法。
在本发明的实施例中,当第一数字集合中包含的数字数量小于或等于10000时,可以执行第一算法,即执行步骤204至步骤207;当第一数字集合中包含的数字数量大于10000时,可以执行第二算法,即执行步骤208至步骤214。
步骤204,确定需要生成的随机数的数字数量n。
步骤205,从第一数字集合中随机选择一个数字X。
步骤206,将数字X存入第二数字集合的末尾。
步骤207,从第一数字集合中删除数字X。
上述步骤205至步骤207循环执行n次。
步骤208,确定需要生成的随机数的数字数量n。
步骤209,新建数字集合s。
步骤210,从第一数字集合中随机选择一个数字X。
步骤211,判断数字X是否在数字集合s中。
若数字X在数字集合s中,则重新执行步骤210;若数字X不在数字集合s中,则执行步骤212。
步骤212,将数字X存入第二数字集合的末尾,并将数字X存入数字集合s中。
步骤213,判断数字集合s中包含的数字数量是否小于第三数量阈值。
在本发明实施例中,第三数量阈值可以为第二数量阈值和需要生成的随机数中剩余未选择的数字数量的最小值。当数字集合s中包含的数字数量小于第三数量阈值时,重新执行步骤210;当数字集合s中包含的数字数量不小于第三数量阈值时,执行步骤214。
步骤214,从第一数字集合中批量删除数字集合s。
上述步骤209至步骤214循环执行ceil[n/p]次。其中,ceil[n/p]表示n/p的向上取整值。
步骤215,取第二数字集合的后n个数字作为随机数。
步骤216,对第二数字集合利用归并排序后并序列化存入硬盘的数据库中。
本发明实施例在生成多组随机数的过程中,可以将生成一组随机数之后的第二数字集合存储至硬盘的数据库中,避免将第二数字集合保存在内存中,利用硬盘空间替代内存空间,减少对内存空间的占用,在不增加硬件配置的情况下可以尽可能多地增加随机数的生成组数。
本发明实施例可以针对第一数字集合中包含的数字数量满足不同条件的情况,采用不同的算法生成随机数,避免因采用单一算法生成不同条件下的随机数,从整体上缩短随机数的生成时间。
本发明实施例在从第一数字集合中删除已选数字时,采用批量删除已选数字的方式,减少了从第一数字集合删除已选数字的次数,减少针对第一数字集合的操作次数,从整体上缩短随机数的生成时间。
本发明实施例可以应用于硬件序列号的生成场景,可以满足较大批次或较大数量级的硬件序列号的生成。
如图3所示,示出了本发明实施例的一种随机数的生成装置的结构示意图。该装置可以包括如下模块。
获取模块31,用于获取第一数字集合和第二数字集合;
生成模块32,用于在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数;
所述生成模块32,还用于在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数。
在本发明的一种示例性实施例中,所述生成模块32,用于在所述第一数字集合满足包含的数字数量大于第一数量阈值、包含的数字数量属于第一数量范围和包含的数字数量的数量级大于第一数量级阈值中的至少之一时,按照所述第二方式根据所述第一数字集合和所述第二数字集合生成所述第二随机数。
在本发明的一种示例性实施例中,所述生成模块32,包括:
循环执行模块,用于按照如下步骤循环执行第一次数,所述第一次数为所述第二随机数的数字数量与第二数量阈值的比值的向上取整值,所述第二数量阈值小于所述第二随机数的数字数量:
步骤01:创建第三数字集合;
步骤02:循环执行以下子步骤直至所述第三数字集合中的数字数量大于或等于第三数量阈值,所述第三数量阈值为所述第二数量阈值和所述第二随机数中未生成的随机数的数量的最小值:
子步骤021:从所述第一数字集合中随机选择一个第二已选数字;
子步骤022:若所述第三数字集合中存在所述第二已选数字,则再次从所述第一数字集合中随机选择一个第二已选数字;若所述第三数字集合中不存在所述第二已选数字,则将所述第二已选数字存储至所述第二数字集合的末尾;
步骤03:从所述第一数字集合中批量删除所述第三数字集合;
数字提取模块,用于按照从后向前的顺序,从所述第二数字集合中提取出所述第二随机数的数字数量的数字,并将提取出的所述数字作为所述第二随机数。
在本发明的一种示例性实施例中,所述生成模块32,用于在所述第一数字集合满足包含的数字数量小于或等于所述第一数量阈值、包含的数字数量属于第二数量范围和包含的数字数量的数量级小于或等于所述第一数量级阈值中的至少之一时,按照所述第一方式根据所述第一数字集合和所述第二数字集合生成所述第一随机数,所述第二数量范围的最大值小于所述第一数量范围的最小值。
在本发明的一种示例性实施例中,所述循环执行模块,还用于按照如下步骤循环执行第二次数,所述第二次数为所述第一随机数的数字数量:
步骤11:从所述第一数字集合中随机选择一个第一已选数字;
步骤12:将所述第一已选数字存储至所述第二数字集合的末尾;
步骤13:从所述第一数字集合中删除所述第一已选数字;
所述数字提取模块,用于按照从后向前的顺序,从所述第二数字集合中提取出所述第一随机数的数字数量的数字,并将提取出的所述数字作为所述第一随机数。
在本发明的一种示例性实施例中,所述装置还包括:
存储模块,用于在所述生成模块生成第一随机数或生成第二随机数之后,对所述第二数字集合进行归并排序,并将归并排序后的所述第二数字集合存入数据库中。
在本发明的一种示例性实施例中,所述获取模块31,用于从所述数据库中读取所述第二数字集合。
上述装置实施例的介绍相对简单,相关之处可以参照上述方法实施例中的相关内容,在此不再赘述。
本发明实施例还提供了一种电子设备,如图4所示,包括处理器41、通信接口42、存储器43和通信总线44,其中,处理器41,通信接口42,存储器43通过通信总线44完成相互间的通信,
存储器43,用于存放计算机程序;
处理器41,用于执行存储器43上所存放的程序时,实现如下步骤:
获取第一数字集合和第二数字集合;
在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数;
在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数。
在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数时,在所述第一数字集合满足包含的数字数量大于第一数量阈值、包含的数字数量属于第一数量范围和包含的数字数量的数量级大于第一数量级阈值中的至少之一时,按照所述第二方式根据所述第一数字集合和所述第二数字集合生成所述第二随机数。
在按照所述第二方式根据所述第一数字集合和所述第二数字集合生成所述第二随机数时,按照如下步骤循环执行第一次数,所述第一次数为所述第二随机数的数字数量与第二数量阈值的比值的向上取整值,所述第二数量阈值小于所述第二随机数的数字数量:
步骤01:创建第三数字集合;
步骤02:循环执行以下子步骤直至所述第三数字集合中的数字数量大于或等于第三数量阈值,所述第三数量阈值为所述第二数量阈值和所述第二随机数中未生成的随机数的数量的最小值:
子步骤021:从所述第一数字集合中随机选择一个第二已选数字;
子步骤022:若所述第三数字集合中存在所述第二已选数字,则再次从所述第一数字集合中随机选择一个第二已选数字;若所述第三数字集合中不存在所述第二已选数字,则将所述第二已选数字存储至所述第二数字集合的末尾;
步骤03:从所述第一数字集合中批量删除所述第三数字集合;
按照从后向前的顺序,从所述第二数字集合中提取出所述第二随机数的数字数量的数字,并将提取出的所述数字作为所述第二随机数。
在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数时,即在所述第一数字集合满足包含的数字数量小于或等于所述第一数量阈值、包含的数字数量属于第二数量范围和包含的数字数量的数量级小于或等于所述第一数量级阈值中的至少之一时,按照所述第一方式根据所述第一数字集合和所述第二数字集合生成所述第一随机数,所述第二数量范围的最大值小于所述第一数量范围的最小值。
在按照所述第一方式根据所述第一数字集合和所述第二数字集合生成所述第一随机数时,按照如下步骤循环执行第二次数,所述第二次数为所述第一随机数的数字数量:
步骤11:从所述第一数字集合中随机选择一个第一已选数字;
步骤12:将所述第一已选数字存储至所述第二数字集合的末尾;
步骤13:从所述第一数字集合中删除所述第一已选数字;
按照从后向前的顺序,从所述第二数字集合中提取出所述第一随机数的数字数量的数字,并将提取出的所述数字作为所述第一随机数。
在所述生成第一随机数或生成第二随机数之后,对所述第二数字集合进行归并排序,并将归并排序后的所述第二数字集合存入数据库中。
在获取第二数字集合时,从所述数据库中读取所述第二数字集合。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的随机数的生成方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的随机数的生成方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种随机数的生成方法,其特征在于,包括:
获取第一数字集合和第二数字集合;
在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数;
在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数。
2.根据权利要求1所述的方法,其特征在于,所述在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数,包括:
在所述第一数字集合满足包含的数字数量大于第一数量阈值、包含的数字数量属于第一数量范围和包含的数字数量的数量级大于第一数量级阈值中的至少之一时,按照所述第二方式根据所述第一数字集合和所述第二数字集合生成所述第二随机数。
3.根据权利要求2所述的方法,其特征在于,所述按照所述第二方式根据所述第一数字集合和所述第二数字集合生成所述第二随机数,包括:
按照如下步骤循环执行第一次数,所述第一次数为所述第二随机数的数字数量与第二数量阈值的比值的向上取整值,所述第二数量阈值小于所述第二随机数的数字数量:
步骤01:创建第三数字集合;
步骤02:循环执行以下子步骤直至所述第三数字集合中的数字数量大于或等于第三数量阈值,所述第三数量阈值为所述第二数量阈值和所述第二随机数中未生成的随机数的数量的最小值:
子步骤021:从所述第一数字集合中随机选择一个第二已选数字;
子步骤022:若所述第三数字集合中存在所述第二已选数字,则再次从所述第一数字集合中随机选择一个第二已选数字;若所述第三数字集合中不存在所述第二已选数字,则将所述第二已选数字存储至所述第二数字集合的末尾;
步骤03:从所述第一数字集合中批量删除所述第三数字集合;
按照从后向前的顺序,从所述第二数字集合中提取出所述第二随机数的数字数量的数字,并将提取出的所述数字作为所述第二随机数。
4.根据权利要求2所述的方法,其特征在于,所述在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数,包括:
在所述第一数字集合满足包含的数字数量小于或等于所述第一数量阈值、包含的数字数量属于第二数量范围和包含的数字数量的数量级小于或等于所述第一数量级阈值中的至少之一时,按照所述第一方式根据所述第一数字集合和所述第二数字集合生成所述第一随机数,所述第二数量范围的最大值小于所述第一数量范围的最小值。
5.根据权利要求4所述的方法,其特征在于,所述按照所述第一方式根据所述第一数字集合和所述第二数字集合生成所述第一随机数,包括:
按照如下步骤循环执行第二次数,所述第二次数为所述第一随机数的数字数量:
步骤11:从所述第一数字集合中随机选择一个第一已选数字;
步骤12:将所述第一已选数字存储至所述第二数字集合的末尾;
步骤13:从所述第一数字集合中删除所述第一已选数字;
按照从后向前的顺序,从所述第二数字集合中提取出所述第一随机数的数字数量的数字,并将提取出的所述数字作为所述第一随机数。
6.根据权利要求1所述的方法,其特征在于,在所述生成第一随机数或生成第二随机数之后,所述方法还包括:
对所述第二数字集合进行归并排序,并将归并排序后的所述第二数字集合存入数据库中。
7.根据权利要求6所述的方法,其特征在于,所述获取第二数字集合,包括:
从所述数据库中读取所述第二数字集合。
8.一种随机数的生成装置,其特征在于,包括:
获取模块,用于获取第一数字集合和第二数字集合;
生成模块,用于在所述第一数字集合满足第一条件时,按照预设的第一方式根据所述第一数字集合和所述第二数字集合生成第一随机数;
所述生成模块,还用于在所述第一数字集合满足第二条件时,按照预设的第二方式根据所述第一数字集合和所述第二数字集合生成第二随机数。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214820.6A CN111427540A (zh) | 2020-03-24 | 2020-03-24 | 随机数的生成方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214820.6A CN111427540A (zh) | 2020-03-24 | 2020-03-24 | 随机数的生成方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111427540A true CN111427540A (zh) | 2020-07-17 |
Family
ID=71549331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010214820.6A Pending CN111427540A (zh) | 2020-03-24 | 2020-03-24 | 随机数的生成方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111427540A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070186287A1 (en) * | 2004-02-10 | 2007-08-09 | Slade Glen J | Data storage |
CN105117199A (zh) * | 2015-09-08 | 2015-12-02 | 中国南方电网有限责任公司电网技术研究中心 | 真随机数后处理系统及方法 |
CN107046564A (zh) * | 2017-01-19 | 2017-08-15 | 腾讯科技(深圳)有限公司 | 一种数据选取方法及相关装置 |
CN108845790A (zh) * | 2018-06-20 | 2018-11-20 | 胡晓东 | 一种应用区块链来生成可信随机数的方法及相关装置 |
CN109634741A (zh) * | 2018-11-09 | 2019-04-16 | 天津五八到家科技有限公司 | 资源分配方法及装置 |
CN110324321A (zh) * | 2019-06-18 | 2019-10-11 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN110647685A (zh) * | 2019-09-23 | 2020-01-03 | 阿里巴巴集团控股有限公司 | 一种信息推荐方法、装置及设备 |
CN110825349A (zh) * | 2019-11-14 | 2020-02-21 | 深圳市网心科技有限公司 | 随机数生成方法、区块链节点、系统及介质 |
-
2020
- 2020-03-24 CN CN202010214820.6A patent/CN111427540A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070186287A1 (en) * | 2004-02-10 | 2007-08-09 | Slade Glen J | Data storage |
CN105117199A (zh) * | 2015-09-08 | 2015-12-02 | 中国南方电网有限责任公司电网技术研究中心 | 真随机数后处理系统及方法 |
CN107046564A (zh) * | 2017-01-19 | 2017-08-15 | 腾讯科技(深圳)有限公司 | 一种数据选取方法及相关装置 |
CN108845790A (zh) * | 2018-06-20 | 2018-11-20 | 胡晓东 | 一种应用区块链来生成可信随机数的方法及相关装置 |
CN109634741A (zh) * | 2018-11-09 | 2019-04-16 | 天津五八到家科技有限公司 | 资源分配方法及装置 |
CN110324321A (zh) * | 2019-06-18 | 2019-10-11 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN110647685A (zh) * | 2019-09-23 | 2020-01-03 | 阿里巴巴集团控股有限公司 | 一种信息推荐方法、装置及设备 |
CN110825349A (zh) * | 2019-11-14 | 2020-02-21 | 深圳市网心科技有限公司 | 随机数生成方法、区块链节点、系统及介质 |
Non-Patent Citations (1)
Title |
---|
JORGE A 等: "A random number generator based on unpredictable chaotic functions", 《COMPUTER PHYSICS COMMUNICATIONS》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105760395A (zh) | 一种数据处理的方法、装置及系统 | |
CN108628898B (zh) | 数据入库的方法、装置和设备 | |
CN107240029B (zh) | 一种数据处理方法及装置 | |
CN110728323A (zh) | 目标类型用户的识别方法、装置、电子设备及存储介质 | |
CN111260220B (zh) | 群控设备识别方法、装置、电子设备和存储介质 | |
CN112116436A (zh) | 一种智能推荐方法、装置、计算机设备及可读存储介质 | |
CN112434188A (zh) | 一种异构数据库的数据集成方法、装置及存储介质 | |
CN112329954A (zh) | 物品召回方法、装置、终端设备及存储介质 | |
CN111563199A (zh) | 一种数据处理方法及装置 | |
CN111384972A (zh) | 多进制ldpc解码算法的优化方法、装置及解码器 | |
CN112433757A (zh) | 一种确定接口调用关系的方法和装置 | |
CN111427540A (zh) | 随机数的生成方法、装置、电子设备和存储介质 | |
CN114722048B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN111324725A (zh) | 一种话题获取方法、终端、计算机可读存储介质 | |
CN112256691A (zh) | 一种数据映射方法、装置及电子设备 | |
CN113837878B (zh) | 一种数据比对方法、装置、设备及存储介质 | |
CN106156169B (zh) | 离散数据的处理方法和装置 | |
CN110557324B (zh) | 未读im消息处理方法及装置 | |
CN112396100A (zh) | 一种细粒度分类模型的优化方法、系统及相关装置 | |
CN111224674B (zh) | 多进制ldpc码的解码方法、装置及解码器 | |
CN111488490A (zh) | 视频聚类方法、装置、服务器及存储介质 | |
WO2020082911A1 (zh) | 一种信息发送方法及装置 | |
CN110807092A (zh) | 数据处理方法及装置 | |
CN111274203A (zh) | 一种话单存储系统及方法 | |
CN112600756B (zh) | 业务数据的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200717 |