人工智能通识-科普-随机-2

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】



人工智能通识-2019年3月专题汇总

PRNGs

Pseudo-Random Number Generators,伪随机数生成器。

计算机的随机数生成器有两个常用套路:

第一种,神奇公式法
就是说有人创造了一个公式,而其他人无法从这个公式计算出的一系列结果数字中找到规律。
什么?不可能找不到规律?只要数字足够多就一定能发现规律?
——圆周率都计算到小数点后数十亿位了,不也是没有找到规律吗?
上帝使用了神奇公式创造了圆周率,我们人类至今还没猜透,也许未来有一天能够猜透,但不是现在。

第二种,列表查找法
还是圆周率,我们假定它的小数部分是一个无限不循环无规律的数字,这些数字是上帝用神奇公式生成的,虽然我们无法知道那个神奇公式,但我们可以认为圆周率的下一个小数的数字是没规律的,随机的。
然后我们就依次把每个小数作为下一个数字结果返回,这个结果看起来就像是随机的,——假设你不知道圆周率的下一个数字的话。

真随机数字生成器

以上那些都是伪随机。如何才能编写一个真随机程序?

几乎不可能!

也许人的自由意识是个办法,你可能认为你随口说出的数字就是真随机的,但实际并不是那么回事。
如果你连续记录下自己随口说出的1万个数字,然后统计一下其中0、1、2、..8、9每个数字出现的次数,就会发觉很可能相差很大。
但是,如果你统计圆周率小数点1万个数字,就会发觉0到9每个数字出现的概率几乎一样。
这说明圆周率是比你更真的随机。
你的大脑可能受到你自己经验和教育的影响,对某些数字有偏好,而对另一些则不大喜欢。

看来让一个人坐在计算机背后,扮演上帝随口说数字的办法是行不通了。

扔色子也许是个更好的办法,因为色子落地的点数受到太多因素的影响,比如桌面的粗糙、色子形状的粗糙、投掷的角度和力度,甚至构成色子的量子不确定性。
但我相信,如果你扔色子一万次,然后统计一下点数,也很可能是不均匀的,某些数字比如6或者3可能多些。因为毕竟你的力度往往变化不大,把色子扔出去再捡回来的动作区别也不大,只要不足够复杂,人的主观意识就会产生可观测的影响,你可能喜欢某个数字多些,而另一个点数少些,最终也体现在结果上。

除非色子小到量子尺度,以至于色子自身都变得不确定,而且这种量子不确定性质起到了主导作用,那样才能产生真正的随机。

然而,即使在量子尺度的不确定性,也只是我们这个世界的不确定性,就像圆周率在我们的世界无法确定下一位,但在另一个世界它可能只是一个公式算法的结果而已。

线性同余方法(LCG)

Linear congruential generator,线性同余生成器是在各自编程语言中应用最多的伪随机数生成算法。
这种算法也常被称为Multiplicative Congruential Generator (MCG), or Lehmer RNG。

它的算法表达式是:

X_{n+1}=(aX_n+c) \% m

这里百分号是取余数的意思,就是10%7等于3,10%4等于2。
X是一个随机数序列,a乘以第n个数字,再加上c,然后除以m,所得余数就是第n+1个随机数。
这里m是模数modulus;a是倍增multiplier;c是increment增量;X_0是种子数seed。

变成python的代码如下:

import time

def lcg(seed=False):
    if not seed:
        seed=int(time.time())
    a = int(time.time())
    c = int(time.time())
    modulus = time.time()
    for i in range(100):
        seed = (a * seed + c) % modulus
        yield seed/modulus

for itr in lcg():
    print(itr)

这个代码里面使用了时间戳time()做为模数和默认的种子数,每次运行可以得到100个随机数字,在0到1之间均匀分布。

下面是个更简化的可行的PRNGs:

def rd(max=1, seed=False):
    if not seed:
        seed = int(time.time() * time.time())
    return (seed * 48271234 + 877283) % 8923334 / 8923334*max

for i in range(10):
    print(rd(100),'\t',int(rd(100)))

这里利用了时间戳乘方的方法把它放大,然后使用一些比较大的随意数字对它做乘法、加法再取余数。得到结果如下:

真随机性的标准

怎么评判一个随机算法是否足够好,以最大程度模拟了真随机?

可以从以下几个方面考虑:

  1. 统计学的均匀分布。最简单说就是随机1万次,所得到的数字在设定范围内均匀分布。比如0~100之间随机1万次,那么应该出现大约100次的99,100次的88。
  2. 不可推演。不能从前面若干次的随机数推演出下一个,相反也不能从后面的随机数字推演出前面一个。历史和未来都不可以预测,无规律可寻。
  3. 不可重现。不会出现有规律的循环或局部循环的现象。每个随机都是独立的,和时空紧密绑定的。
  4. 不能有极限值。也就是说随机的数字不能在开始或结束或者某些情况下,越接近这个情况随机结果也就越接近一个极限值。

其实我们上面的算法都不满足第三条,因为这个程序在同一时间的不同计算机上生成的随机数是一样的。因为只有时间戳是真变量。

要解决时空独立,那么必须在算法中加入每个CPU芯片特有的型号作为变量,才可能做到。

同一CPU不可能在同一时间的不同地点运行随机程序,所以当我们把时间和CPU独有型号数字结合的时候,就能创造出时空独立的随机。

但要满足第2条不可推演就必须借助超越人类认知的真随机数字,比如圆周率。根据时间戳和芯片ID计算出一个数字n,然后取圆周率小数的第n位,作为此时空的随机数字

这里隐藏了一个疑问,那就是观众知道圆周率的计算方法,或对圆周率的数字了解很多,这样情况会不会对随机性产生影响?实际是不会的,因为圆周率本身就是不可完整推测的,也就是说人类并没有真的掌握圆周率的生成规律,不知道它背后的神奇算法。

这里也隐藏了一个缺陷,就是我们的随机数是有限的,并不能超越我们所知的圆周率数字长度。有限或无限从来就不是问题,因为我们人类大脑根本无法有效处理无限的概念。何况我们计算机很多语言的随机程序计算的数字也只有2的32次方个可能数字,大约40亿个范围,这要比已知的圆周率数字少很多,所以够用了。

关于圆周率,可能这里的说法并不严谨。圆周率当然是可计算的,甚至有数学家发明了直接计算第n位小数的方法。但是,我们还是无法否认,圆周率的小数位的数字看上去都是随机出现的,而且这种随机的纯数字表面并没有规律可言。


欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


每个人的智能新时代

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~


END

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

  • 欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】 对人类大脑而言,有一些能让所有人崩溃的概念,比如无限,这个东...
    zhyuzh3d阅读 964评论 0 5
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,595评论 0 5
  • 本文为圆周率日特辑~ 简介 圆周率π是一个圆的周长与直径之比。即:π = C / d 。它是一个无限不循环小数,即...
    阿啊阿吖丁阅读 1,372评论 0 0
  • 办公室的装修一般情况下需要注意的面比较多,普通的办公室尚且如此,一般的那种大型办公室装修更是这样,不仅仅是面积变大...
    办公室装修阅读 214评论 0 0
  • 忽忆昔时春酒甜,故人转眼别经年。 怕今来访嫌突兀,相约其实半生前。 垣衣遍结深巷里,草色齐上旧阶沿。 叩门良久无人...
    牾绌阅读 1,313评论 3 25