真随机数产生方法

合集下载

随机数算法

随机数算法

随机数算法简介随机数在计算机科学和信息安全领域扮演着重要角色。

随机数算法用于生成一系列看似随机的数字,这些数字在统计上是均匀分布、不可预测的。

本文将介绍几种常见的随机数算法,包括伪随机数算法和真随机数算法,以及它们的优缺点和应用场景。

伪随机数算法伪随机数算法是一种基于确定性计算的生成随机数的方法。

通过一个初始种子(seed),该算法按照一定规则生成一系列数字。

由于算法的确定性,相同的初始种子将产生相同的随机数序列。

线性同余法线性同余法是最常见的伪随机数生成算法之一。

它通过以下公式计算随机数:X(n+1) = (a × X(n) + c) mod m其中,X(n)表示当前的随机数,X(n+1)表示下一个随机数,a、c、m是事先确定的常数。

这个算法的优点是简单、高效,也易于实现。

然而,如果选择的参数不当,可能产生周期较短或重复的随机数序列。

梅森旋转算法梅森旋转算法是一类伪随机数算法的统称,它们使用一个巨大的状态空间来生成随机数。

最著名的梅森旋转算法是梅森旋转发生器(Mersenne Twister)。

梅森旋转算法的优点是周期非常长,产生的随机数序列质量较高。

它的缺点是占用内存较大,生成随机数的速度相对较慢。

真随机数算法真随机数算法是通过物理过程来生成随机数,例如电子噪声、放射性衰变等。

相比于伪随机数算法,真随机数算法具有更高的随机性和不可预测性。

硬件随机数生成器硬件随机数生成器是一种基于物理过程的真随机数生成器。

它利用物理设备(如热噪声源、放射性衰变)产生的不可预测的随机事件来生成随机数。

由于依赖于硬件设备,硬件随机数生成器通常安全性较高,但成本也较高。

环境噪声环境噪声是通过采集环境中的噪声信号来生成随机数。

这些噪声信号可以是来自于温度、湿度、大气压力等方面的变化。

环境噪声具有很高的随机性,可以被用作真随机数的来源。

由于环境噪声易于采集和获取,这种方法相对来说比硬件随机数生成器更容易实现。

产生随机数的公式

产生随机数的公式

产生随机数的公式有很多种,常用的有以下几种:
1.使用伪随机数生成器(PRNG),例如Python 中的random 模块或者C++ 中的rand 函数。

这些函数可以通过线性同余生成器(Linear Congruential Generator,LCG)或者其他方法来产生随机数。

2.使用数学公式,例如圆周率π的前缀数列或者对数列求余数。

这种方法可以生成伪随机数序列,但是计算量较大,且随机性较差。

3.使用物理现象,例如温度、压力、振动等。

这种方法可以生成真正的随机数,但是硬件设备成本较高,且使用较为复杂。

根据你的需求和应用场景,可以选择适合的方法来产生随机数。

注意:产生随机数时,需要注意数据类型、范围和精度的问题。

例如,在生成整数随机数时,需要注意数据类型的范围限制,否则可能会出现溢出等问题。

真随机数发生器的制作方法

真随机数发生器的制作方法

真随机数发生器的制作方法
要制作一个真随机数发生器,我们需要利用物理过程或现象来
产生随机性。

下面我将从硬件和软件两个方面来介绍制作真随机数
发生器的方法。

硬件方法:
1. 热噪声发生器,利用半导体器件的热噪声来产生随机数。


以利用二极管的热噪声或者场效应晶体管的热噪声来作为随机数源。

2. 光电效应,利用光电二极管或者其他光敏器件接收自然光或
其他光源的微弱光信号,并转换为电信号作为随机数源。

3. 核衰变,利用放射性同位素的核衰变过程来产生随机数。


过探测放射性同位素衰变事件的时间间隔来获取随机数。

软件方法:
1. 基于环境噪声的随机数生成,通过利用计算机系统的环境噪声,如鼠标移动、键盘敲击、磁盘I/O等,来获取随机数。

2. 基于时间的随机数生成,利用计算机系统的高精度时钟和时
间戳来产生随机数。

3. 基于混沌理论的随机数生成,利用混沌系统的特性,通过迭
代计算产生随机数序列。

无论是硬件方法还是软件方法,都需要经过严格的测试和验证,确保生成的随机数具有均匀分布、独立性和不可预测性。

此外,真
随机数发生器的安全性也是非常重要的,特别是在密码学和安全通
信领域的应用中。

因此,在制作真随机数发生器时,需要考虑到系
统的安全性和可靠性。

如何产生真正的随机数

如何产生真正的随机数

如何产生真正的随机数
要产生真正的随机数是一件很困难的事情。

人工挑选的数字一点都不随机,就连计算机生成的随机数也被称为“伪随机数”(pseudorandom numbers)。

不过,科学家发现,有一个过程可能是真正地随机:溶液中晶体的形成。

我们完全没有能力预测晶体在什么时间时候、在溶液的哪个位置开始形成,没有能力预测形成的晶体的朝向,也没有能力预测给定时间内晶体能形成多大。

正是利用这样的性质,英国科学家想到了一个生成随机数的方法。

他们设计了一个机器人在溶液中生长晶体,并拍摄记录了晶体的生长情况。

随后,他们利用计算机图像处理技术,统计了生成的晶体的大小,取向、颜色,和排列状况,并以此为输入信息,通过计算机程序生成随机数列。

最终,这些随机数列都通过了数学检验,被证明是真正的随机数。

不仅如此,为了证明他们的系统是有效随机的,团队使用他们生成的随机数列来加密一个单词,crystal。

实验证明,这比用伪随机数加密的同一个单词更难被破解。

这一研究发表在《Matter》上。

欢迎跟我们分享你和科学的故事。

计算机生成真随机数原理及实践

计算机生成真随机数原理及实践

计算机生成真随机数原理及实践计算机生成真随机数原理及实践经常可以听到一种痴语:计算机是有限状态机,不能产生随机数...。

但实际上计算机在硬件驱动过程中是可以生成随机数的。

首先看一个例子我们让电脑控制室内温度,工作情况大致是这样的,首先电脑要有探测温度的传感器、和控制温度的空调,电脑得到室温后和设定温度进行比较,如果温度过高则启动空调降温、过低则启动空调升温,这时室温就是以设定温度为中心的变数,从中可以提取随机数。

我们知道电脑的显示和发声也都是属于硬件驱动,电脑通过对显卡和声卡的驱动达到显示和发声,而显卡和声卡都有自己的逻辑处理器,计算机向它们发出的指令并不是都能得到立即执行的,它们各自的处理器要根据自己的状态安排执行计算机CPU指令,所以对某些指令的执行时间是不确定的,具体表现在执行某些函数时运行时间是随机的。

我们利用这种时间的不确定性就可以让计算机程序生成随机数。

例如C++语言中的Beep(0,0),SetWindowText(NULL),MessageBeep(MB_ICONQUESTI ON)等,其它语言的函数也有类似情况是肯定的。

我们只要连续调用此类函数,监测其执行时间,处理执行时间就可以达到目的。

但函数的执行时间都是很短暂的,用一般测量时间的方法都太粗糙了,必须自己设计度量方法。

每个计算机都有其工作频率称为主频,与之相对应的是时钟周期,做一个函数读取计算机运行以来的时钟周期,用函数运行时计算机所经历的周期数来度量时间;测量一下当前的周期数,让函数运行,再测量一下当前的周期数,两个周期数的差值再减去一个本底值就代表了函数运行时间,如此做多个循环就可以大量采集运行时间了,处理运行时间数组得到随机数组。

且看实验数据:连续调用Beep(0,0)函数的运行时间115636,114283,114899,115030,114488,114350,114866,115132,114317,114757处理数据的方法很多这里只用最简单的方式。

真随机数产生方法

真随机数产生方法

真随机数产生方法随机数是指在一定范围内并且没有规律、符合统计概率的数值。

在现代科学技术中,随机数广泛应用于密码学、模拟实验、数值计算以及数据分析等领域。

为了保证随机数的真实性和随机性,在随机数的产生上需要使用一些特定的方法和算法,下面将介绍几种常用的随机数产生方法。

1.物理随机数生成器:物理随机数生成器基于物理过程生成随机数,如放射性衰变、热噪声、光子计数器等。

以上过程都属于物理性质的随机现象,可以提供高质量的随机数。

这种方法的优点是能够生成真正的随机数,但缺点是设备成本较高且硬件复杂。

2.伪随机数生成器:伪随机数生成器是指利用确定性算法产生的数列,该数列具有类似随机数的统计性质。

计算机程序中常用的随机数生成算法如线性同余法、乘积同余法、梅森旋转算法等。

这种方法的优点是产生速度快且成本较低,但缺点是数列的随机性有一定的限度,容易出现周期性。

3.基于硬件和软件的混合随机数生成器:基于硬件和软件的混合随机数生成器结合了物理随机数生成器和伪随机数生成器的优点。

生成器的硬件部分通过采集物理噪声等真正的随机信息,然后再通过伪随机数生成算法进行处理,生成随机数。

这种方法既能提供较高质量的真随机数,又能满足生成速度和成本的要求。

4.基于量子力学的随机数生成器:基于量子力学的随机数生成器利用量子物理学的特性生成随机数。

例如,基于单光子的随机数生成器采用光子的量子性质来产生随机数,利用光的干涉和吸收性质使得光子到达探测器的时间是随机的。

这种方法的优点是可以生成高质量的真随机数,但缺点是设备成本较高且技术复杂。

随机数在现代社会中应用广泛,例如在密码学中使用随机数生成密钥,保证密码的安全性;在模拟实验中使用随机数生成不确定变量,模拟实际情况;在数据分析和机器学习中使用随机数进行抽样和建模等。

因此,随机数的产生方法具有重要意义。

总结起来,随机数的产生方法可以分为物理随机数生成器、伪随机数生成器和基于硬件和软件的混合随机数生成器。

真随机数生成器原理

真随机数生成器原理

真随机数生成器原理全文共四篇示例,供读者参考第一篇示例:真随机数生成器(TRNG)是指通过利用无法预测的物理或生物过程生成的随机数的设备。

相较于伪随机数生成器(PRNG),真随机数生成器生成的随机数更具有随机性和不可预测性,能够在安全性要求高的领域发挥重要作用。

在计算机科学、密码学、模拟计算等领域,真随机数生成器广泛应用。

真随机数生成器的工作原理主要基于物理或生物过程的不可预测性。

常用的物理过程包括量子效应、热噪声、光电效应等;生物过程则包括人类感知、动物运动等。

通过利用这些过程,可以获取到具有高度随机性的数据,从而生成真随机数。

量子效应是一种常用的真随机数生成器的物理原理。

在量子物理学中,一个系统的状态可以是多个状态的线性叠加,而当这个系统被观测时,其状态会坍缩为一个确定的状态。

量子效应的不可预测性保证了生成的随机数的高度随机性。

通过利用量子效应,可以构建基于量子比特的真随机数生成器。

另一个常用的真随机数生成器原理是热噪声。

在物理系统中,由于温度的存在,会导致电子的不规则运动和碰撞,产生电子在电路中随机分布的现象。

通过测量这些不规则的电信号,可以获取到高度随机的数据,从而生成真随机数。

热噪声真随机数生成器具有结构简单、易实现的特点,被广泛应用于各种场景。

光电效应也是一种常用的真随机数生成器原理。

在光电转换器件中,当光子撞击材料表面时,会引发电子的光电发射现象。

由于光子的不可预测性,引发的光电发射现象也是不可预测的,从而可以作为真随机数生成器的输入源。

光电效应真随机数生成器具有高速、实时性强的特点,适用于要求高速随机数生成的场景。

在生物过程方面,人类感知也可以作为真随机数生成器的原理。

在密码学中,可以利用人类对随机性的感知来生成真随机数。

通过让人类在一组随机数中选择特定的数字或位置,可以获取到高度随机的数据。

由于人类的感知能力是不可预测的,因此生成的随机数也具有高度的随机性。

除了以上介绍的几种原理外,还有许多其他物理或生物过程可以作为真随机数生成器的原理,例如原子核衰变、混沌系统等。

随机数生成公式

随机数生成公式

随机数生成公式
随机数生成公式
随机数的产生是一门重要研究领域,随机数常用于计算机科学领域,如密码学的研究,计算机算法的实验,游戏编程等等。

它还常用于统计学,模拟研究等等。

下面介绍几种常用的随机数生成公式:
1、伪随机数生成公式:
基于线性同余发,采用x=(ax+b) mod c计算方式,下一次的x值就是等于上一次计算结果。

其中a、b、c均为常数,这是一种非常简单的随机数生成方式。

但它只能产生有限的几种可能的随机数,不能满足某些应用场景的需要。

2、多项式函数生成公式:
多项式函数生成公式是一种多元多项式的形式,每次计算结果可以根据前几次计算的值,也就是前几次的随机数,再利用多项式函数,进行计算,从而产生最终的随机数。

3、混合随机数生成公式:
混合随机数生成公式是一种混合两种或多种随机数产生方式,以此来获得更好的随机数品质。

比如说,可以将伪随机数的产生过程和多项式函数的计算方式混合在一起,这样就可以产生更加好的随机数了。

4、梅森旋转算法:
梅森旋转算法是一种基于特殊函数构造的随机数生成方式,它
可以产生更加复杂的随机数,从而满足一些应用场景的需要。

总的来说,随机数的产生仍然是一个非常重要的研究领域,找到更加有效的方式,以便于计算机更加精准地产生随机数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ATmega1 28单片机的真随机数发生矗时间:2009-12-16 15:39:00 来源:单片机与嵌入式系统作者:刘晓旭,曹林,董秀成西华大学
ATmega1 28单片机的真随机数发生矗时间:2009-12-16 15:39:00 来源:单片机与嵌入式系统作者:刘晓旭,曹林,董秀成西华大学
引言
随机数已广泛地应用于仿真、抽样、数值分析、计算机程序设计、决策、美学和娱乐之中。

常见的随机数发生器有两种:使用数学算法的伪随机数发生器和以物理随机量作为发生源的真随机数发生器。

要获取真正随机的真随机数,常使用硬件随机数发生器的方法来获取。

这些真随机数都是使基于特定的真随机数发生源(如热噪声、电流噪声等),每次获取的真随机数都是不可测的,具有很好的随机性。

真随机数因其随机性强,在数据加密、信息辅助、智能决策和初始化向量方面有着广泛应用,构建一种基于硬件真随机数发生源,具有广泛的应用价值。

但目前硬件真随机数发生源均较复杂,而且很少有基于单片机的真随机数发生器。

本文利用RC充放电的低稳定度,根据AVR单片机的特点设计了一种性价比极高的真随机数发生器。

该随机数发生器使用元件很少,稳定性高,对一些价格敏感的特殊场合,如金融、通信、娱乐设备等有较大的应用意义。

1 基本原理和方法
1.1 基本原理
串联的RC充放电电路由于受到漏电流、电阻热噪声、电阻过剩噪声、电容极化噪声等诸多不确定性因素的影响,其充放电稳定度一般只能达到10-3。

利用这种RC充放电的低稳定度特性实现廉价的真随机数发生源。

Atmel公司AVR单片机ATmega 128以其速度快、功能强、性价比高等优点广泛应用于各种嵌入式计算场合。

利用AVR单片机引脚配置灵活多样的特点,使用Amnega128两个I /O口作为真随机数的电气接口。

其原理如图1所示。

主要原理是利用串联RC电路的不确定性产生真随机数源,收集数据,通过AVR单片机ATmega128和主时钟电路量化RC电路的充放电时问,获得不确定的2位二进制数据,再利用程序将每4次采集的数据综合,最后产生1个8位的真随机数。

v1.0 可编辑可修改
1.2 方法
1.2.1 RC电路充放电过程
I/O口配置策略为:PG3 口(第18脚)作为充电输出口,PG4 口(第19脚)作为检测输入口。

当PG3输出为高时,输出电流通过电阻对电容进行充电;当PG3输出为低时,电容通过电阻放电。

PG4用于检测电容上的电平状态。

充放电过程如图2所示。

1.2.2 AVR单片机获得不确定的2位二进制数据
AVR单片机主时钟采用普通晶体振荡器。

用该主时钟来测量RC电路的充放时间,用AVR单片机的定时器(1个16位定时器)来量化充放电时间。

由于主时钟的周期远远小于RC 充放电时间,观察实验数据,最低2位二进制有效数字具有不确定性。

以下为AVR单片机定时器对外部RC电路进行3次充电和2次放电所花时间的量化值:
1597 1588 1584 1588 1588
1589 1588 1589 1584 1589
1589 1589 1589 1584 1589
1584 1588 1588 1588 1588
1588 1588 1589 1589 1587
1596 1588 1588 1589 1589
1589 1588 1588 1588 1589
1588 1584 1589 1589 1589
1589 1589 1588 1588 1588
1588 1589 1588 1588 1588
1588 1584 1589 1588 1588
1588 1589 1589 1588 1589
1589 1589 1588 1588 1588
1588 1588 1589 1588 1590
1588 1589 1588 1588 1588
1597 1589 1588 1597 1587
1588 1588 1587 1588 1588
1588 1588 1588 1588 1588
1589 1589 1589 1588 1589
1588 1588 1589 1588 1588
1588 1588 1588 1588 1588
1588 1588 1589 1588 1589
1596 1589 1588 1589 1588
1588 1588 1588 1589 1584
1589 1589 1589 1588 1585
1589 1588 1588 1588 1589
1589 1588 1589 1588 1588
1589 1589 1589 1588 1597
1589 1588 1589 1589
1.2.3 程序设计
由以上数据统计特征可见,每次测量结果仅有两位不确定二进制数据。

为了产生1个8位数据,设计了C语言程序控制专用函数测量4次,每次得到了2个二进制随机数,这样调用该函数1次即可得到1字节的随机数。

主要程序如下:
2 实验结果和分析
经实验,得到两位不确定二进制数的概率分布。

5 min后数据分布:P(00)=16%,P(01)=19%,P(10)=37%,P(11)=28%。

10 min后的数据分布:P(00)=16%,P(01)=21%,P(10)=38%,P(11)=25%。

22 min后的数据分布:P(00)=14%,P(01)=23%,P(10)=38%,P(11)=25%。

37 min后的数据分布:P(00)=16%,P(01)=26%,P(10)=36%,P(11)=22%。

以上数据由单片机统计后经串口直接输出到超级终端的显示参数。

25℃下产生的3 500个8位数据的分布如图3所示。

从图中可以看出,有4个区间分布概率较大,分别是[0,32]、[40,90]、[160,225]、[230,255]。

产生这样的分布和具体使用的元器件特性以及测试现场的环境有关。

在采集得到大量的序列后,通过计算机分析没有发现有周期重复性。

3 提高性能的措施
在实际应用中,若采用该方法产生的随机数进行数据加密时,为防止解密者拆除、短接RC电路或更改RC电路参数,可利用测得的充放电时间来确定外部RC电路的存在和参数的稳健。

如若充放电时间不在程序预先设定的区间内,单片机立即销毁相关数据并停止程序运行,从而达到加密的效果。

提高随机数产生速率。

采用本文的方法产生的随机数的速率和RC充放电时间有关系,由于RC充放电速率影响,在产生高速率随机数的时候不合适。

针对该问题,可将得到的真随机数作为种子来产生一定数量的伪随机数,这样可大大提高产生随机数的速率。

结语
设计和实现了一种基于AVR单片机的真随机数发生器,利用RC充放电电路的不稳定性完成了真随机数的产生。

该随机数发生器利用AVR单片机少量硬件资源完成,具有设计简单,成本低廉的优点。

最后提出了软硬件结合的方式,提高了该随机数发生器的性能,拓展了该真随机数发生器的应用范围。

相关文档
最新文档