God does NOT play dice with the Universe! 算法
什么是随机(random)?字典中给出的定义是无计划,无序和无目的,纯靠运气。随机是生活中必不可少的成分,好比彩票,游戏,安全,早餐吃什么,这些行为都有一些随机的成分,但咱们能说这些行为都是随机的吗? 安全
好比早餐,吃的人觉得是随机的,作什么吃什么,对厨师而言,多是精心安排的,就不算随机行为。游戏也是如此,随机掉了一件装备,你如获至宝,其内部是一个几率算法,若是你掌握了这个算法作了一个外挂,对你而言,这也不是随机行为了。同理,不少安全密码的密钥都是随机数,好比核武器的按钮,但难保哪天就被一个天才数学家破解了。 dom
个人意思是,很难定性判断某一行为是不是随机的。随着咱们掌握的信息愈来愈多,咱们的决策算法愈来愈高效,咱们的计算能力愈来愈强大,进而有能力预测出目前没法预测的随机行为。这就留下了一个有意思的问题,是否真的存在上帝,上帝是否掷骰子(随机行为),在宇宙大爆炸前,上帝是否已经设计好宇宙的发展?而咱们的人生,是否早已写好,只是看不见而已呢?固然,目前一切还不得而知,万一宇宙的产生只是一个意外呢? 设计
随机并不绝对,但生活中又要用到随机,历史上有不少随机数生成器(random number generator,简称RNG),好比骰子。这方面,咱们的祖先甚至写了一本《易经》,能够理解为如何生成随机数并破解随机行为的百科全书。 3d
根据不一样的方法,大概分为两种方式:T(rue)RNG和P(seudo)RNG。二者有什么区别呢? orm
经过一些物理现象来产生随机数,好比大气层的噪音,元素的衰变和放射,掷骰子等,由于这些行为受到多个天然因素的影响,过程不可预测,因此主观上以为比较安全。因此,当咱们对安全性和经济性上有较高要求时,每每须要采用这类方式产生的随机数,好比彩票,人类不会放心的把这件事情交给机器来处理,必定要有仪式感,让它看上去是随机的。 blog
然而,公正的行为不必定会产生公平的结果。相比而言,TRNG更大的优点在于不可预测性,但结果上并不必定平均。 游戏
伪随机数经过算法产生,计算机所以能够模拟随机行为。但由于有公式,因此只要参数肯定,也就是随机的种子,获得的随机结果必定是可重复的。好比以下的通随机数生成公式,给出种子1,就能够获得一系列的随机数。 get
这样通过算法设计出来的随机数分布很均匀,完美的不像人类或天然的产物。下面是在JS,产生1000000个随机数,区间在(0,1000): generator
我在Matlab中也作了一样的实验,分布也很平均。可见,目前机器生成的随机数,从结果来看确实很随机。好比随机生成灰度图和对应的直方图统计,有没有小时候电视没信号的视觉效果?
万物看似随机,却都有其统计的宿命
正态分布
完美的随机缺乏美感。好比咱们玩斗地主,洗牌的原则就是作到尽量的随机,好比同一个花色的不能连续,数字不能连,甚至不能有规律,简单说,要求越严格越随机。但是,若是随机作到绝对的公平,游戏的趣味性则会大大下降。
事物发展的规律也是如此,所谓的能就是势差,只有不平等才能产生差,进而有了发展的动力。大天然在宏观上达成平衡,但在个体之间是不平等的。
因此,咱们须要人工干预随机行为,让这种随机变得不平等。如何让随机行为更符合客观规律呢,就是统计的意义。好比统计人的身高,若是样本够多,好比一个学校,一个城市,一个国家,整个世界,就会发现这样的一个分布规律:
这就是正态分布,有兴趣的能够读一下以前写的关于斐波那契数列的文章,由于它们里面都体现了黄金分割。如何让机器模拟正态分布的随机数生成?Box–Muller transform提供了公式,网上也有现成的代码,下图是JS上实现的正态分布的随机数效果:
以下是正态分布的灰度图和直方图:
噪声
经过公式,咱们能够建立符合规律(公式)的随机数,数学的美老是晦涩而难以发现的。而庄子云:“天地有大美而不言”。
不是在说随机数,跟美有什么关系?且看下图,沙丘的造成,过程是随机的,但却给人一种美,这样的场景有不少,好比地形,火焰,雨雪天气,木质纹路等,都有各自的美,当咱们感叹大天然的鬼斧神工,天然会有疑问:如何经过随机算法来模拟它们?
这就是噪声:在三维空间提供高效的,可实现,可重复的伪随机信号。固然,上面的随机算法也能制造出噪声,但比较尖锐,生硬不天然,咱们成为White Noise,好比电视上的雪花屏。学者们根据效率、用途、天然程度(即效果好坏)等方面的衡量,提出了许多但愿用程序模拟天然噪声的方法。例如,Perlin噪声被大量用于云朵、火焰和地形等天然环境的模拟;Simplex噪声在其基础上进行了改进,提到了效率和效果;而Worley噪声被提出用于模拟一些多孔结构,例如纸张、木纹等。---摘自candycat的博文《谈谈噪声》
这里就不阐述噪声纹理的算法和思路了,这块内容也不少,我的的理解也很浅薄。如上图,是Perlin噪声的4次分形叠加产生的灰度图,添加颜色表,模拟地形的一个过程。机器的特色是不易出错,能够完美的执行任务,经过噪声,能够在可控范围内随机的创造出不完美,反而更有质感,真实感。
当机器的能力愈来愈强大,也许,相比机器,人类的一个优点就是会犯错,真是这种随机的错误,让咱们的生活更真实。生命的演化也是如此,基因的突变是随机的,多数是失败的,但正是那些不经意的成功,不断推进生命的发展和演变。
Impossible is nothing~