[发明专利]一种不重复随机自然数的快速生成方法在审
申请号: | 202110680934.4 | 申请日: | 2021-06-18 |
公开(公告)号: | CN113778380A | 公开(公告)日: | 2021-12-10 |
发明(设计)人: | 王璞;张亮;高舜龙;宋兴瑞;罗英;季尧遥;张海丰 | 申请(专利权)人: | 南京国科软件有限公司 |
主分类号: | G06F7/58 | 分类号: | G06F7/58 |
代理公司: | 北京化育知识产权代理有限公司 11833 | 代理人: | 尹均利 |
地址: | 210000 江苏省南京市栖霞区*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 重复 随机 自然数 快速 生成 方法 | ||
本发明公开了一种不重复随机自然数的快速生成方法,定义两个初值为空的集合S和集合T,定义一个长度为M的一维数组F,并将F中每一个元素的数值初始化为1,即F[1:M]=1。循环N次调用随机生成函数,第k次调用随机生成函数的Ω区域为Ωk=[1,M‑k+1],其中k=1,2,…,N,将每一个随机生成数Sk,按顺序存储在S中。依次循环集合S中的每个元素Sk(k=1,2,…,N),计算出满足的第一个索引J,将索引J添加到集合T中,并令F[J]=0。返回集合T。此算法解决了在给定的自然数区域内,能够快速挑选出一部分不重复的自然数序列。
技术领域
本发明涉及自然数生成技术领域,尤其涉及一种不重复随机自然数的快速生成方法。
背景技术
当前,在气象预报、油藏勘探、材料力学、物流交通、生物医药等各个领域中,计算机数值模拟占有不可比拟的重要性。不重复随机自然数的生成在计算机数值模拟中又占有重要的地位,例如在模拟某一时刻的全国各城市天气状态时,要求全国30%的城市为多云,且这些城市在地图上呈现等概率均匀分布;再例如对于某种二代基因测序仪芯片,芯片上共有1300万个小孔,要求85%的小孔中有微球存在,且存在微球的这些小孔在芯片上的位置呈现等概率均匀分布。具体的算法阐述如下:
给定自然数区域为Ω=[1,M],要求从Ω中随机生成N个不重复的数。需要注意的是,当N>M/2时,该问题等价于先生成Ω中的所有数,然后再从其中剔除M-N个不重复的数即可。也就是说,只需要考虑从Ω中随机生成N个不重复的数,且N≤M/2的情况。
传统的生成不重复自然数的计算流程如下:
第一步:定义一个用于存储不重复数字的集合S,并赋值为空。
第二步:在Ω内随机生成一个数α。
第三步:判断α是否在S内,若在,则重新进行第二步;若不在,则将α加入S。
第四步:判断S的个数是否不大于N,若是,则进行第二步;若不是,则退出。
此计算流程无法解决在给定的自然数区域内,能够快速挑选出一部分不重复的自然数序列。
为此,我们提出一种不重复随机自然数的快速生成方法来解决上述问题。
发明内容
本发明的目的是为了解决现有技术中存在的缺点,在给定的自然数区域内,无法快速挑选出一部分不重复的自然数序列,而提出的一种不重复随机自然数的快速生成方法。
为了实现上述目的,本发明采用了如下技术方案:一种不重复随机自然数的快速生成方法,其特征在于,包括以下步骤:
S1:定义两个初值为空的集合S和集合T,定义一个长度为M的一维数组 F,并将F中每一个元素的数值初始化为1,即F[1:M]=1。
S2:循环N次调用随机生成函数,第k次调用随机生成函数的Ω区域为Ωk=[1,M-k+1],其中k=1,2,···,N,将每一个随机生成数Sk,按顺序存储在S中。
S3:依次循环集合S中的每个元素Sk(k=1,2,···,N),计算出满足的第一个索引J,将索引J添加到集合T中,并令F[J]=0。
S4:返回集合T。
优选的,所述集合T中的每个元素即是满足条件的不重复的随机自然数。
优选的,所述假设生成一个随机数的计算复杂度为p,比较两个数大小的计算复杂度为q,加减法运算的计算复杂度为r,则本设计的算法计算量可进行如下分析:第二步的计算量为D2=Np+(N-1)r,第三步的计算量为
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京国科软件有限公司,未经南京国科软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110680934.4/2.html,转载请声明来源钻瓜专利网。