[发明专利]一种真随机数生成方法有效
申请号: | 201710601779.6 | 申请日: | 2017-07-21 |
公开(公告)号: | CN107368283B | 公开(公告)日: | 2020-07-03 |
发明(设计)人: | 王剑;乔阔远 | 申请(专利权)人: | 郑州大学 |
主分类号: | G06F7/58 | 分类号: | G06F7/58 |
代理公司: | 洛阳公信知识产权事务所(普通合伙) 41120 | 代理人: | 宋晨炜 |
地址: | 450000 河南省郑州*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 随机数 生成 方法 | ||
一种真随机数生成方法,用到一种生成装置,生成装置包括随机系统和生成系统;随机系统包括闭环连接的处理模块、事件执行模块和计时模块,生成系统包括闭环连接的数值拆分模块、0/1生成模块和存储模块,其中数值拆分模块和0/1生成模块均与处理模块相连接。本发明提供一种真随机数生成方法,引入外部随机事件执行装置,确保随机数生成过程完全是随机的,从而生成真随机数。
技术领域
本发明涉及随机数生成技术领域,具体的说是一种真随机数生成方法。
背景技术
目前,为了完成某些特定的任务或实现特定的功能,一些应用程序在运行的过程中需要生成随机数。例如,某些应用程序为了降低恶意访问用户身份的风险,在用户身份验证时需要生成动态的随机密码或随机验证码提供给用户,这些随机密码和随机验证码需要由随机数来确定。又如,为了更好地贴合现实场景,对于现实场景中某些随机出现的资源,某些应用程序在用户使用时也需要随机提供这些资源,这些资源的种类、数量等需要由生成的随机数来确定。
现有技术中,生成随机数大都是利用软件算法进行生成,目前主流的计算机软件开发语言都提供有生成随机数的方法,例如C语言的程序开发中,普遍使用的是基于rand()方法获得的随机数,然而rand()方法获得的随机数存在序列固定的问题,即对于某一时刻的随机数,其下一次调用rand()方法生成的随机数是固定并且与上一时刻的随机数是关联的,使用其他地软件语言也有同样的问题存在,目前的已有的解决方案是在使用随机数生成命令之前将随机数生成命令内部的随机因子打乱,打乱的方式是将随机因子赋为当前的系统时间,来保证生成结果的随机性。而该方法的弊端在于如果在生成随机数频率非常高的情况下,可能出现由于时间度量单位不够小出现的多个基于时间的随机因子一样的情况,该情况会导致生成的随机数一样。
发明内容
为了解决现有技术中的不足,本发明提供一种真随机数生成方法,引入外部随机事件执行装置,确保随机数生成过程完全是随机的,从而生成真随机数。
为了实现上述目的,本发明采用的具体方案为:
一种真随机数生成方法,用到一种生成装置,生成装置包括随机系统和生成系统;随机系统包括闭环连接的处理模块、事件执行模块和计时模块,生成系统包括闭环连接的数值拆分模块、0/1生成模块和存储模块,其中数值拆分模块和0/1生成模块均与处理模块相连接;具体的生成步骤如下:
S1、数值拆分模块根据随机数的上界B1和下界B2计算界差B,B=B1-B2;
S2、数值拆分模块对B进行拆分,其中k0、k1、k2、……、kn为自然数,并且有并计算叠加参数T=k0+k1+k2+……+kn+(n+1);
S3、数值拆分模块将k0、k1、k2、……、kn传输给0/1生成模块,0/1生成模块生成(n+1)个存储区,每个存储区分别有(k0+1)、(k1+1)、(k2+1)、……、(kn+1)个数位,存储区生成完毕后向存储模块申请(n+1)个内存地址块,记为Address0,Address1,Address2,……,Addressn;其中Address0大小为k0个字节,Address1大小为k1个字节,依次类推;
S4、数值拆分模块传输给处理模块一个临界值L生成信号;
S5、处理模块接受到临界值L生成信号后开始生成临界值L,具体的生成步骤包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州大学,未经郑州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710601779.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:特种钢铸造金属模具加热装置
- 下一篇:一种七支管组合型铸钢节点浇冒系统