随机数
来源:互联网 发布:高礼英才计划 知乎 编辑:程序博客网 时间:2024/05/20 16:42
随机数的定义
This sequence is random if the quantity of information it contains – in the sense of Shannon's information theory – is also infinite.In other words, it must not be possible for a computer program, whose length is finite, to produce this sequence.
根据香农信息理论,如果一个序列包含的信息量是无穷时,那么这个序列就是随机的。换句话说,对于一个字符有限的计算机程序来说,是不可能产生这样的序列的。不过这个定义看起来没有什么意义,因为在现实中我们不可能找到一个无限序列。
在现代我们通常使用下面两个定义来描述什么是随机数:
1,a sequence of random numbers is a sequence of independent numbers with a specified distribution and a specified probability of falling in any given range of values.
随机序列中的所有数字之间是独立的,同时每个数字落在给定范围内的可能性是一定的,相同的。即数字的分布是均匀的。
2,it is a sequence that has the same statistical properties as random bits, is unpredictable and cannot be reliably reproduced.
随机数符合统计学属性,同时是不可预测并无法可靠的被重新生成的。
而检查一个数字是否是随机数也是一件很困难的事--只能通过检查这个数是否符合统计学属性,即其中的每个数出现的概率是完全相同的。
true random numbers vs. pseudo random numbers真随机数和伪随机数
有两种主要的产生随机数的方式。一种是测量一些随机的物理现象,然后对在测量过程中可能的倾向进行补偿。例如扔硬币,我们可以找一个人反复扔硬币来产生一个随机序列,并且考虑到一个硬币可能重量不均匀导致更容易正面着地,使用更多的硬币来做实验。这个过程就是一种对可能存在的倾向的补偿。
这样的随机数发生器叫做物理性随机数发生器,比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。它们的缺点是技术要求比较高。
另一种方式就是用某种算法产生一个长的,看起来随机的序列,但是实际上完全依赖于一个较小的初始值,又称为种子seed或钥匙key。
后者被称为伪随机数发生器,其产生的数字都是伪随机数。
完全用算法产生的随机数都是伪随机数。这些数是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。
一个例子: 英特尔cpu自带了一个随机数发生器。它使用cpu当前的温度作为生成随机数的一个因素(物理方式),因此是真正的随机数。
关于随机数的wiki:
http://en.wikipedia.org/wiki/Random_number_generation
- 随机数
- 随机数
- 随机数。。。
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 随机数
- 十大渗透测试演练系统
- 输出列表中出现次数最多的元素
- 函数对象
- Git的深入理解与GitHub托管服务的使用
- ASP.NET网页的组成
- 随机数
- 处理海量数据问题之六把密匙
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- errno常数
- 创建socket 之前的步骤 WSAStartup()
- HDU 1211 RSA 解密
- oracle10g分区表的自动维护(原创)
- java.lang.IllegalArgumentException: pointerIndex out of range
- FreeBSD 下载 安装