物理随机数
⑴ 随机数的运用
在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。
产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。
真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。
在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。
在真正关键性的应用中,比如在密码学中,人们一般使用真正的随机数。
C语言、C++、C#、Java、Matlab等程序语言和软件中都有对应的随机数生成函数,如rand等。
⑵ 电脑中的随机数是怎么生成的(硬件方面的原理)
http://ke..com/view/1127.htm
伪随机数的生成方法
一般地,伪随机数的生成方法主要有以下3种[6]:
(1) 直接法(Direct Method),根据分布函数的物理意义生成。缺点是仅适用于某些具有特殊分布的随机数,如二项式分布、泊松分布。
(2) 逆转法(Inversion Method),假设U服从[0,1]区间上的均匀分布,令X=F-1(U),则X的累计分布函数(CDF)为F。该方法原理简单、编程方便、适用性广。
(3)接受拒绝法(Acceptance-Rejection Method):假设希望生成的随机数的概率密度函数(PDF)为f,则首先找到一个PDF为g的随机数发生器与常数c,使得f
[伪随机数发生器]
伪随机数发生器
(x)≤cg(x),然后根据接收拒绝算法求解。由于算法平均运算c次才能得到一个希望生成的随机数,因此c的取值必须尽可能小。显然,该算法的缺点是较难确定g与c。 因此,伪随机数生成器(PRNG)一般采用逆转法,其基础是均匀分布,均匀分布PRNG的优劣决定了整个随机数体系的优劣[7]。下文研究均匀分布的 PRNG。
随机数的“庐山真面目”
首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。
伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪随机数有一部分遵守一定的规律;另一部分不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这正是点到了事物的特性,即随机性,但是每种树的叶子都有近似的形状,这正是事物的共性,即规律性。从这个角度讲,你大概就会接受这样的事实了:计算机只能产生伪随机数而不能产生绝对随机的随机数。(严格地说,这里的计算机是指由冯诺依曼思想发展起来的电子计算机。而未来的量子计算机有可能产生基于自然规律的不可重现的“真”随机数)。
⑶ 真随机数的定义是什么
随机数是专门的随机试验的结果。
在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。
产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。
真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。
在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。
在真正关键性的应用中,比如在密码学中,人们一般使用真正的随机数。
⑷ 真实随机数如何产生为什么说真实随机数可以抵抗恶意攻击
随机数(RNG)主要分为两大类:伪随机与物理随机数。
伪随机是由各种算法产生的,本质上是决定论的,就是你输入同一个初值,结果是确定的。当然这不是我们想要的。
物理随机数是由物理过程产生的。分为三小类。Noise,chaos,quantum。
Noise和chaos是由经典物理过程产生的,也是决定论的。比如我们知道小球的初始条件,我们就可以预测小球未来的运动情况。这也不是我们想要的。
真随机数是由量子过程产生的,其原理是基于uncertain principle。举个最简单的例子,当单个光子经过分束器BS的时候,有两条路径可以选择,用任何理论都无法预测which way(隐变量理论除外),所以通过测量光子走了哪条路就可以产生真正的随机数。当然这里要求探测设备和发射源是被信任的。如果被坏人操作,其实也产生不了随机数。
那么就不存在真随机数吗?No,device independent quantum random number(DI-QRNG)就可以实现。DI-QRNG是通过观察贝尔不等式的违背来产生随机数,这个过程是不依赖探测设备和源的,所以由DI-QRNG产生的真随机数可以抵抗恶意攻击。
⑸ 电脑取随机数是什么原理,是真正的随机数吗
伪随机数这个概念是相对于“真”随机数而言。电脑通过发送种子数值,运用算法产生某个看起来像随机数的数字,但是实际上这个数字是可以预测的。因为电脑没有从环境中收集到任何随机信息。虽然是伪随机数,但是并不是所有领域都不需要伪随机数。比如,如果你在玩电子游戏,那么游戏过程中是靠伪随机数还是真随机数并不重要。另一方面,如果你的应用正在加密,情况就不同了,因为你不希望攻击者能够猜到你的随机数。举个例子,如果攻击者掌握了某随机数生成器使用的种子数值和加密算法,如果随机数生成器完全依靠种子数值和加密算法生成密文,这个过程中不添加任何额外随机性,如果攻击者掌握的情报足够多,他们可以逆推来确定加密算法一定会用到的伪随机数,也就能破译密文。
⑹ 随机数 是什么
随机数是专门的随机试验的结果。
产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。
⑺ 什么是随机数及随机数种子,能不能详细通俗介绍一下
随机数就是就随机数种子中取出的数。种子就是个序号,这个序号交给一个数列管理器,通过这个序号,你从管理器中取出一个数列,这个数列就是你通过那个序号得到的随机数。
但这个随技术并不真正随机。因为它是通过某个算法的得到。也就是说你给数列管理器同一个序号将得到同样一个“随机”数列。
也就是说种子和随机数列是一一对应的。{An}=f(x), x 就是种子,F()是算法,{An}是数列,这个数列看上去是随机的,这是因为An的通项很复杂。
例如:
从1、2、3、4、5、6、7、8、9、0这十个数中随机取出一个数,取出的数是6的话,那么6就叫随机数。十个数字就叫随机数种子。
如果是从1到50之间取数字,取出的数字叫随机数,这1到50那50个数字就叫随机数种子。
(7)物理随机数扩展阅读:
根据密码学原理,随机数的随机性检验可以分为三个标准:
统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。
密码学安全伪随机性。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。
真随机性。其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。
相应的,随机数也分为三类:
伪随机数:满足第一个条件的随机数。
密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器计算得出。
真随机数:同时满足三个条件的随机数。
⑻ 在自然物理规律中,是否存在随机
1、我比较赞同你的观点——要是两次抛硬币的方式与当时环境完全相同的话,正反结果会是一样的。其实,正是随机现象的定义中忽略了它所假设的“在相同条件下重复进行试验”的“相同条件”是完全相同还是基本相同,这也正是你已经指出来的。我想,没有人能够做到两次抛掷硬币时的力度、大小、方向和作用点会完全相同的!所以,当然不可能完全预知抛出的结果究竟是正还是反。因为从高处下落并且翻滚落地的硬币,只要不是“恰好”垂直落地,那么稍有任何倾斜,就必会有一面着地,只是难以预测其正反罢了。但是,我们无法预知,不代表这件事完全是“随机”的!恰恰相反,如果有谁在硬币抛出的一瞬间就已经知道了关于这枚硬币从抛出到落地时的全部受力参数,那么,这个事件就不再是随机而是确定的了。人们之所以称它为“随机现象”,其实是因为无法确知,只能模糊处理,以致归为“随机”了。而确定、随机、模糊恰恰是数学上通常用来分类现象的三种基本情况,都是比较相对的。另外,值得一提的是,每次抛出的硬币,总会往下落,是确定而不“随机”的。虽然,统计学上正反的几率大致相当,但每一次进行有限测试所得出的百分比,是“随机”而不确定的。但考虑到理论和实践的关系,这并非每次都完全相等的百分比,都被模糊地忽略不计了。2、“所有的世界都开始于一个点”,乃是建立在至少三个假设之上:1)有许多个世界;2)世界开始于一个点;3)所有的世界都开始与一个点。“无数个世界像无数条射线从开始点射出”是继续建立在至少另外三个假设之上的:4)世界像射线从开始点射出;5)无数个世界像无数条射线从开始点射出;6)无数个从同一个开始点射出的世界互不干涉,仍能保持以射线射出而非波状或别的形式。至少以上所有假设都是与现存世界不符的。世界的产生并非如抛硬般非正即反地“随机”,乃是有太多我们不了解但却是确定发生且有目的性的事件,所以,这种恰好相反的a、b随机数,也许在理论上讨论一番,是可以的;但以本人愚见,其实是远离了宇宙起源真相的。另外,如果没有记错的话,与这个物质世界相反的世界,在理论上来说,好像是一个由反物质组成的肉眼看不见的世界,但这样的世界目前只是在理论上有存在的可能而已。关于宇宙的起源,建议观看《万物的起源》 http://v.youku.com/v_show/id_XMjA4ODUxMjg0.html
⑼ 随机数的计算公式是什么
为追求真正的随机序列,人们曾采用很多种原始的物理方法用于生成一定范围内满足精度(位数)的均匀分布序列,其缺点在于:速度慢、效率低、需占用大量存储空间且不可重现等。为满足计算机模拟研究的需求,人们转而研究用算法生成模拟各种概率分布的伪随机序列。伪随机数是指用数学递推公式所产生的随机数。从实用的角度看,获取这种数的最简单和最自然的方法是利用计算机语言的函数库提供的随机数发生器。典型情况下,它会输出一个均匀分布在0和1区间内的伪随机变量的值。其中应用的最为广泛、研究最彻底的一个算法即线性同余法。
线性同余法LCG(Linear Congruence Generator)
选取足够大的正整数M和任意自然数n0,a,b,由递推公式:
ni+1=(af(ni)+b)mod M i=0,1,…,M-1
生成的数值序列称为是同余序列。当函数f(n)为线性函数时,即得到线性同余序列:
ni+1=(a*ni+b)mod M i=0,1,…,M-1
以下是线性同余法生成伪随机数的伪代码:
Random(n,m,seed,a,b)
{
r0 = seed;
for (i = 1;i<=n;i++)
ri = (a*ri-1 + b) mod m
}
其中种子参数seed可以任意选择,常常将它设为计算机当前的日期或者时间;m是一个较大数,可以把它取为2w,w是计算机的字长;a可以是0.01w和0.99w之间的任何整数。
应用递推公式产生均匀分布随机数时,式中参数n0,a,b,M的选取十分重要。
例如,选取M=10,a=b =n0=7,生成的随机序列为{6,9,0,7,6,9,……},周期为4。
取M=16,a=5,b =3,n0=7,生成的随机序列为{6,1,8,11,10,5,12,15,14,9,0,3,2,13,4,7,6,1……},周期为16。
取M=8,a=5,b =1,n0=1,生成的随机序列为{6,7,4,5,2,3,0,1,6,7……},周期为8。
⑽ 存在真正的随机数么
首先纠正下楼主的一个误解 “而我想从哲学上讲任何自然现象都是可以被认知的,是有规律可循的”你说的问题在哲学上实际是可知论与不可知论的争论,至今没有定论,有的哲学流派认为世界是可知的,有的认为是不可知的。(这个分歧最终可归结为决定论与非决定论,或者说因果联系)只是在我国,由于政府,导致主流媒体提供给你们的观念是可知论的观念。
如果你对物理有所了解,那么你应该知道海森堡的"测不准原理",既然组成物质的微粒都不可能被确定状态,那么何来因果联系?何来可知?
当然既然在哲学上能争论这么久自然不是一句话可以解决的问题,我只能说对于我而言是这样认为的。
然后来谈随机数的问题。圆周率和根号2的数值是无限不循环的,那么也就是说,在你计算出下一个数值之前,你是不知道下一个数值是多少,这不正是你要求的么?
至于均匀不重复的问题,你可以了解下《随机过程》与《数理统计》,这里牵扯到一个概率学的问题,既然样本的总数你都不能确定,那么是否是均匀的就无从谈起。
所以楼主如果真的有兴趣,只需要多读一些数学,物理,哲学方面的书就可以了,另外眼光可以开阔一点,不要仅限于国内的刊物。