什么是随机(random)?字典中给出的定义是无计划,无序和无目的,纯靠运气。随机是生活中必不可少的成分,比如彩票,游戏,安全,早餐吃什么,这些行为都有一些随机的成分,但我们能说这些行为都是随机的吗?
比如早餐,吃的人以为是随机的,做什么吃什么,对厨师而言,可能是精心安排的,就不算随机行为。游戏也是如此,随机掉了一件装备,你如获至宝,其内部是一个概率算法,如果你掌握了这个算法做了一个外挂,对你而言,这也不是随机行为了。同理,很多安全密码的密钥都是随机数,比如核武器的按钮,但难保哪天就被一个天才数学家破解了。
我的意思是,很难定性判断某一行为是否是随机的。随着我们掌握的信息越来越多,我们的决策算法越来越高效,我们的计算能力越来越强大,进而有能力预测出目前无法预测的随机行为。这就留下了一个有意思的问题,是否真的存在上帝,上帝是否掷骰子(随机行为),在宇宙大爆炸前,上帝是否已经设计好宇宙的发展?而我们的人生,是否早已写好,只是看不见而已呢?当然,目前一切还不得而知,万一宇宙的产生只是一个意外呢?
随机并不绝对,但生活中又要用到随机,历史上有很多随机数生成器(random number generator,简称RNG),比如骰子。这方面,我们的祖先甚至写了一本《易经》,可以理解为如何生成随机数并破解随机行为的百科全书。
根据不同的方法,大概分为两种方式:T(rue)RNG和P(seudo)RNG。两者有什么区别呢?
TRNG
通过一些物理现象来产生随机数,比如大气层的噪音,元素的衰变和放射,掷骰子等,因为这些行为受到多个自然因素的影响,过程不可预测,所以主观上觉得比较安全。所以,当我们对安全性和经济性上有较高要求时,往往需要采用这类方式产生的随机数,比如彩票,人类不会放心的把这件事情交给机器来处理,一定要有仪式感,让它看上去是随机的。
然而,公正的行为不一定会产生公平的结果。相比而言,TRNG更大的优势在于不可预测性,但结果上并不一定平均。
PRNG
伪随机数通过算法产生,计算机因此可以模拟随机行为。但因为有公式,所以只要参数确定,也就是随机的种子,得到的随机结果一定是可重复的。比如如下的通随机数生成公式,给出种子1,就可以得到一系列的随机数。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26