跳到主要内容

周刊 202426

· 阅读需 5 分钟

图片

随机数,这是一个问题

今天谈谈,怎么生成真正的随机数。

这个问题超难,但有一些很有趣的内容。

img

首先,编程语言提供的随机数,是伪随机数。

V8 引擎的官网有一篇文章(下图),特别提醒大家这一点。它内置的随机数不是真随机数,而是伪随机数。

img

所谓伪随机数,并非真的随机,而是算法得到的。只要初始的种子值相同,算法会给出一样的结果。

JavaScript 和许多其他语言,都有这个问题。所以,遇到特别强调随机的场合,都不应该使用语言内置的随机数生成器。

img

真随机数需要满足三个条件。

(1)无法预测。 随机数不能被猜到,所以必须非常大,否则会被暴力破解。

(2)不能重复。 每次生成的随机数,不能是一样的。

(3)均匀分布。 随机数必须平均散布在所有区间,不能集中在某些区间。

一般来说,只有通过硬件,才能得到真随机数,单纯的软件算法做不到。

科学家绞尽脑汁,想出各种办法,通过硬件生成随机数。

著名的 Random.org 就是专门生成一个随机数的网站。

img

它在全世界部署了多个无线电接收器,专门监听大气无线电波(即大气噪音,可以理解成大气的布朗运动),通过随机的无线电信号来生成随机数。下图是它的早期硬件设备。

img

因为有硬件支出,使用它的随机数,需要付费。所以,大家可以看到,真随机数是有成本的,不是跑一下程序就可以了。

世界最大的 CDN 服务商 Cloudflare ,为了得到真随机数,做得更绝。

它的三个办公室,每个都有不一样的随机数生成装置。

(1)旧金山总部。一进门就有一堵墙,放满了几十盏熔岩灯。

img

熔岩灯内部是融化的蜡,每时每刻都在变化着形状。

img

需要随机数的时候,就对着这堵墙拍一张照片。每张照片都是不一样的,然后计算照片的哈希,将其作为种子值,计算得到一个随机数。

(2)伦敦办公室。 那里有一面"单摆墙",放满了各种单摆装置。

img

img

单摆和它们的影子,每时每刻都在摆动。每次照片的哈希也是不一样的,可以作为随机数的种子值。

(3)奥斯汀办公室。 那里的天花板,挂了很多彩色的反光片。

img

img

这些反光片对空气流动十分敏感,开门、关门、空调、温度、湿度,都会让其转动,反射出不同颜色的光。因此,也可以用来当作随机数的种子值。

dll-files

最近一些工作在 Windows 系统上完成,有一些软件总是提示:无法找到xxxx.dll文件...,这个网站很好地解决了我的问题:

dll-files

3. 信任的进化

这是一个以游戏为形式的合作博弈论互动讲解手册,非常有意思。

c5677dee288543a2addc48ee4e60c030_2192261

信任的进化

1. Text to speech

这是一个免费的文字转语音的工具,无需登录可以免费使用。

bb431500b74f4365904207f440d6932d_2192261

Text to speech

2. OCR Space

这是免费的在线 OCR(从图像中识别文字)服务,无需登录可以免费使用,并提供免费的 api 接口。

4d290bb4a6224469aa36d72a9bc70146_2192261

OCR Space

网站

死亡公司公墓

这是由 IT橘子提供的倒闭公司数据库,记录了各种公司存活时间、倒闭原因和烧了多少钱。

74040702feab436aa59179dc1dd2c986_2192261

ePub2Kindle

在线将ePub文档转换成适用于Kindle设备的AZW3格式