Random.org---真·随机数

Randomness is the lack of pattern or predictability in events. A random sequence of events, symbols or steps has no order and does not follow an intelligible pattern or combination.

随机

随机是统计学上的一个概念: 无序且不可预测. 随机数在实际开发中用于抽奖, 摇号等希望机器做出随机行为的场景. 在蒙特卡洛模拟算法和一些密码学的领域中, 对随机数有着更大量且高质的要求.
大多数的计算机编程语言都提供了随机数生成函数, 可以提供"看起来随机"的数列.这类随机数其实被称为伪随机数, 它们是通过一个初始的"种子"(通常是系统的时间戳), 经过一系列数学运算得到的. 它们在数学上是可以准确预测和重现的, 在通常情况下, 伪随机数已经足以应付大多数应用场景. 严格意义上的随机数是物理现象产生的, 比如掷硬币, 骰子, 抽签, 剪刀石头布(误), 电子元件的噪音, 核裂变, 量子观测等等.

Fun Fact

类Unix系统中维护了一个随机熵池, 收集计算机运行过程中产生的各种不可预测的噪声, 如:计算机运行过程中键盘敲击的时间间隔, 鼠标的移动轨迹, 内存的使用量, 文件的访问频率等等. 这些计算机运行过程中完全不可预测的行为, 被内核获取且添加进熵池, 在你向内核获取随机数时, 内核便会以这个熵池中的数据为种子, 生成随机数. 在Linux中获取随机数非常简单, 只需要访问/dev/random 文件就可以了.

提供随机数的服务

Random.org 借助自然现象的随机性, 引入无法预测的大气噪声(Atmospheric Noise), 提供随机数生成服务, 网站也提供了相应的API和开发文档用于向其获取随机数.
API调用需要申请Key, 申请的过程也非常简单, 填个邮箱就可以了.但是临时调用也可以用Http访问这个链接 https://www.random.org/cgi-bin/randbyte?nbytes=16384&format=f , 服务器将返回16Kb的二进制随机数列文件.

Further Reading

  • http://www.cnblogs.com/hehehu/archive/2005/08/23/221125.html
  • https://en.wikipedia.org/wiki/Randomness
  • https://zh.wikipedia.org/wiki/%E9%9A%8F%E6%9C%BA%E6%95%B0
Comments
Write a Comment