掌桥专利:专业的专利平台
掌桥专利
首页

一种基于单片机的随机数生成方法

文献发布时间:2023-06-19 09:29:07



技术领域:

本发明涉及随机数生成技术领域,尤其涉及一种基于单片机的随机数生成方法。

背景技术:

随机数是专门的随机试验的结果,在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等。随机数最重要的特性是它在产生时是随机的、不可预测的,真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、核裂变等。在实际应用中很多用的是伪随机数生成方法,计算机通过一个固定的、可以重复的计算方法产生随机数,伪随机数实际上是有规律的,在重要场合比如密码学等中应用是有缺陷的。

尽管已有的随机数生成方法千差万别、各有不同,但是研究工作集中在真随机数的产生和测试方法,以及产生装置的系统复杂性、成本、和可靠性等方面。

真随机数的产生主要利用物理系统的随机性来实现。比如利用电子线路中的随机噪声、电子线路中产生的混沌信号、光学系统中的相位噪声、混沌激光器以及量子物理的随机性等物理基础,人们已经从原理上论证了多种真随机数的产生方案。其中基于电子线路中的随机噪声以及混沌信号的方案已有商用基础。然而,使用电子线路中的物理过程产生随机数的方案,其随机二进制比特的产生速率难以进一步提升。近年来,随着光量子信息技术、光电子技术以及光通信系统不断成熟和发展,采用光学系统实现真随机数产生的方案引起人们的广泛关注。比如,利用激光器输出光场的真空涨落和半导体激光器的混沌信号输出,人们可以实现真随机数的产生,这是一种利用量子物理随机性实现真随机数产生的经典信息技术,上述基于光学系统的经典信息技术可以实现真随机数的高速产生,但是需要使用复杂的后级电子学辅助以实现对激光器相位噪声或混沌特性的测量,增加了系统的复杂性;同时半导体激光器的混沌信号产生需要配合外腔反馈等精密光学控制系统,导致上述产生真随机数的光学方案不利于进一步的向实用化发展。因此设计一种系统简单、成本低、可靠性高且能生成真随机数的方法成为本技术领域的技术人员亟待解决的技术问题。

发明内容:

本发明的目的就是针对现有技术存在的不足而提供一种基于单片机的随机数生成方法,不仅能够生成真随机数,而且系统简单、成本低、可靠性高、易于实现,能够适用于多种使用场合。

为了实现上述目的,本发明采用的技术方案是:一种基于单片机的随机数生成方法,本发明基于单片机实现,单片机包括不同源的中断时钟源、第一禁止中断时钟源,所述方法包括以下步骤:

A、将中断时钟源配置为开启中断并将其中断时间设置为T,将第一禁止中断时钟源配置为禁止中断;

B、同时启动中断时钟源、第一禁止中断时钟源;

C、当中断时钟源发生中断后,读取第一禁止中断时钟源此时的寄存器数值V1;

D、将寄存器数值V1作为所需随机数。

对上述方案的进一步改进为,在所述步骤D中,在将寄存器数值V1作为所需随机数输出前将寄存器数值V1作为第一随机数种子,将第一随机数种子进行第一预设函数处理后得所需随机数。

对上述方案的进一步改进为,所述第一预设函数为用于将第一随机数种子转换为特定范围内的数值的映射函数。

对上述方案的进一步改进为,所述第一预设函数包括加法运算和/或减法运算和/或乘法运算和/或除法运算。

对上述方案的进一步改进为,在所述步骤D中,还将寄存器数值V1作为时间值T1,将时间值T1作为中断时钟源的下一次中断时间T。

对上述方案的进一步改进为,所述单片机还包括第二禁止中断时钟源,将所述第二禁止中断时钟源配置为禁止中断,在启动中断时钟源、第一禁止中断时钟源的同时启动第二禁止中断时钟源,当中断时钟源发生中断后,读取第二禁止中断时钟源此时的寄存器数值V2,将寄存器数值V2作为时间值T1,将时间值T1作为中断时钟源的下一次中断时间T。

对上述方案的进一步改进为,在将所述时间值T1作为中断时钟源的下一次中断时间T前将所述时间值T1作为第二随机数种子,将第二随机数种子进行第二预设函数处理后得中断时钟源的下一次中断时间T。

对上述方案的进一步改进为,所述第二预设函数为用于将第二随机数种子转换为特定范围内的数值的映射函数。

对上述方案的进一步改进为,所述第二预设函数包括加法运算和/或减法运算和/或乘法运算和/或除法运算。

对上述方案的进一步改进为,所述中断时钟源为高速时钟且第一禁止中断时钟源为低速时钟,或中断时钟源为低速时钟且第一禁止中断时钟源为高速时钟。

本发明有益效果在于:本发明提供的一种基于单片机的随机数生成方法,本发明基于单片机实现,单片机包括不同源的中断时钟源、第一禁止中断时钟源,所述方法包括以下步骤:

A、将中断时钟源配置为开启中断并将其中断时间设置为T,当到达所述中断时间T后,中断时钟源发生中断,将第一禁止中断时钟源配置为禁止中断;

B、同时启动中断时钟源、第一禁止中断时钟源;

C、当中断时钟源发生中断后,读取第一禁止中断时钟源此时的寄存器数值V1;

D、将寄存器数值V1作为所需随机数;

本发明基于单片机实现,系统简单、成本低、可靠性高、易于实现,由于中断时钟源与第一禁止中断时钟源不是同源的且受到环境温度、湿度、器件噪声等因素影响,第一禁止中断时钟源在中断时钟源发生中断时的寄存器数值V1与上一次的数值是不同的且没有关联性,由于寄存器数值V1受到环境温度、湿度、器件噪声等因素影响,中断时钟源发生中断时的寄存器数值V1是不可预测的,所以将寄存器数值V1作为所需随机数是利用物理系统的随机性来生成随机数的,所得到的随机数为真随机数,本发明不仅能够生成真随机数,而且系统简单、成本低、可靠性高、易于实现,能够适用于多种使用场合,实用性更强。

具体实施方式:

实施例1,一种基于单片机的随机数生成方法,该方法基于单片机实现,单片机包括两个不同源的时钟源,本实施例中的中断时钟源为高速时钟,第一禁止中断时钟源为低速时钟,当然,在其他实施例中,中断时钟源可以为低速时钟,第一禁止中断时钟源可以为高速时钟,单片机包括不同源的中断时钟源、第一禁止中断时钟源,所述方法包括以下步骤:

A、将中断时钟源配置为开启中断并将其中断时间设置为T,将第一禁止中断时钟源配置为禁止中断;

B、同时启动中断时钟源、第一禁止中断时钟源;

C、当中断时钟源发生中断后,读取第一禁止中断时钟源此时的寄存器数值V1;

D、将寄存器数值V1作为所需随机数;

本发明基于单片机实现,系统简单、成本低、可靠性高、易于实现,由于中断时钟源与第一禁止中断时钟源不是同源的且受到环境温度、湿度、器件噪声等因素影响,第一禁止中断时钟源在中断时钟源发生中断时的寄存器数值V1与上一次的数值是不同的且没有关联性,由于寄存器数值V1受到环境温度、湿度、器件噪声等因素影响,中断时钟源发生中断时的寄存器数值V1是不可预测的,所以将寄存器数值V1作为所需随机数是利用物理系统的随机性来生成随机数的,所得到的随机数为真随机数,本发明不仅能够生成真随机数,而且系统简单、成本低、可靠性高、易于实现,能够适用于多种使用场合,实用性更强。

实施例2,本实施例与实施例1的不同之处在于:在所述步骤D中,在将寄存器数值V1作为所需随机数输出前将寄存器数值V1作为第一随机数种子,将第一随机数种子进行第一预设函数处理后得所需随机数;第一预设函数为用于将第一随机数种子转换为特定范围内的数值的映射函数,能够获得所需特定范围内的随机数值,实用性更强;其余部分均与实施例1相同,此处不再赘述。

实施例3,本实施例与实施例1的不同之处在于:在所述步骤D中,在将寄存器数值V1作为所需随机数输出前将寄存器数值V1作为第一随机数种子,将第一随机数种子进行第一预设函数处理后得所需随机数;第一预设函数既可以包括简单的加法运算、减法运算、乘法运算、除法运算,也可以包括线性同余法等算法;其余部分均与实施例1相同,此处不再赘述。

实施例4,本实施例与实施例1的不同之处在于:在所述步骤D中,还将寄存器数值V1作为时间值T1,将时间值T1作为中断时钟源的下一次中断时间T,能够进一步增加随机数产生的不确定性,从而进一步增加所生成的随机数的可靠性;其余部分均与实施例1相同,此处不再赘述。

实施例5,本实施例与实施例1的不同之处在于:本实施例的单片机还包括第二禁止中断时钟源,将所述第二禁止中断时钟源配置为禁止中断,在启动中断时钟源、第一禁止中断时钟源的同时启动第二禁止中断时钟源,当中断时钟源发生中断后,读取第二禁止中断时钟源此时的寄存器数值V2,将寄存器数值V2作为时间值T1,将时间值T1作为中断时钟源的下一次中断时间T,能够进一步增加随机数产生的不确定性,从而进一步增加所生成的随机数的可靠性;其余部分均与实施例1相同,此处不再赘述。

实施例6,本实施例与实施例4的不同之处在于:在将所述时间值T1作为中断时钟源的下一次中断时间T前将所述时间值T1作为第二随机数种子,将第二随机数种子进行第二预设函数处理后得中断时钟源的下一次中断时间T;第二预设函数为用于将第二随机数种子转换为特定范围内的数值的映射函数,能够获得所需特定范围内的中断时间T,实用性更强;其余部分均与实施例4相同,此处不再赘述。

实施例7,本实施例与实施例4的不同之处在于:在将所述时间值T1作为中断时钟源的下一次中断时间T前将所述时间值T1作为第二随机数种子,将第二随机数种子进行第二预设函数处理后得中断时钟源的下一次中断时间T;第二预设函数既可以包括简单的加法运算、减法运算、乘法运算、除法运算,也可以包括线性同余法等算法;其余部分均与实施例4相同,此处不再赘述。

实施例8,本实施例与实施例5的不同之处在于:在将所述时间值T1作为中断时钟源的下一次中断时间T前将所述时间值T1作为第二随机数种子,将第二随机数种子进行第二预设函数处理后得中断时钟源的下一次中断时间T;第二预设函数为用于将第二随机数种子转换为特定范围内的数值的映射函数,能够获得所需特定范围内的中断时间T,实用性更强;其余部分均与实施例5相同,此处不再赘述。

实施例9,本实施例与实施例5的不同之处在于:在将所述时间值T1作为中断时钟源的下一次中断时间T前将所述时间值T1作为第二随机数种子,将第二随机数种子进行第二预设函数处理后得中断时钟源的下一次中断时间T;第二预设函数既可以包括简单的加法运算、减法运算、乘法运算、除法运算,也可以包括线性同余法等算法;其余部分均与实施例5相同,此处不再赘述。

工作原理:

将中断时钟源配置为开启中断并将其中断时间设置为T,将第一禁止中断时钟源配置为禁止中断;同时启动中断时钟源、第一禁止中断时钟源;当到达所述中断时间T后,中断时钟源发生中断,读取第一禁止中断时钟源此时的寄存器数值V1;将寄存器数值V1作为所需随机数输出;本发明不仅能够生成真随机数,而且系统简单、成本低、可靠性高、易于实现,能够适用于多种使用场合,实用性更强。

当然,以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。

相关技术
  • 一种基于单片机的随机数生成方法
  • 一种基于区块链的随机数生成算法的方法
技术分类

06120112185792