香蕉为什么能做随机数生成器?因为,它是水果界的“辐射之王”

程序员的成长之路

共 2956字,需浏览 6分钟

 ·

2022-07-09 06:52

程序员的成长之路
互联网/程序员/技术/资料共享 
关注


阅读本文大概需要 5 分钟。

来自:杨净 丰色 发自 凹非寺
量子位 | 公众号 QbitAI

一个香蕉,竟然还能这么用?!

真·随机数生成器,项目已开源。

要知道,平日里用计算机生成的(比如Random()函数)都是可以预测的伪随机数。如果用来生成密码,不能保证绝对的安全。

于是乎,研究人员就开始从大自然中寻找随机数,比如大气噪声、量子力学、宇宙微波背景辐射。

那么香蕉,又是如何保证生成真·随机数的呢?

按照小哥的解释,就是先检测香蕉中的放射性物质衰变,经过简单算法处理后生成0-255范围的随机数。

等一下,似乎哪里不对?香蕉、放射性、辐射……

我吃了二十几年的香蕉,你跟我说这个??

水果界“辐射之王”

仔细研究了下发现,香蕉确实有辐射,而且还不小。

在水果界甚至还有着“辐射之王”的江湖称号。

核心原因是香蕉中富含的钾元素在作祟:100g香蕉含有约350毫克的钾。

目前天然存在的钾由三种同位素组成。其中只有少部分的原子核(约0.015%),即钾-40,具有放射性。

这些原子自发衰变,释放出能量分离出电子(β 射线)和伽马射线,从而对蛋白质orDNA等生物分子造成损伤,从而引发放射性疾病或癌症。

基于这样的原理,也就决定了香蕉属于是电离辐射,即核辐射。

嗯,世卫组织列为一类致癌物的那种。

但不用担心,要想达到真正的致死量,人类需要吃3500万根香蕉。

再加上,我们身体大约含有120g钾的天然成分,通过新陈代谢,会将钾的数量维持在一个恒定的水平。

钾-40想要在体内积聚,其实并不容易。

而为了更好地向大众科普辐射强度,物理学家们喜欢用它来做对比,就专门设计了个名词。

香蕉等效剂量,用来描述辐射强度的非正式单位。

  • 一根香蕉的辐射剂量=0.0778微西弗(正式的计算单位)

  • 胸部CT扫描=7万根香蕉等效剂量;

  • 核电站对周边环境的最大允许辐射暴露=每年2500根香蕉等效剂量;

对了,还借此辟个谣。

一些旁友可能看过这样的论断:香蕉的辐射要比手机要高?!

事实上,这两者根本没有可比性。一个是电离辐射,另一个则是非电离辐射。

两者最大的区别,就是能量的高低,是否足以引起原子层面的变化,比如分离出电子。

图源:国际原子能机构

非电离辐射,则是能量较低的那一挂,虽然不足以让原子或分子分离出电子,但可以让这些分子振动,产生热量。这也就是微波炉的工作原理。

一个香蕉+300多元的硬件

这回理解了,香蕉就是个天然的钾-40放射源。

利用钾-40放射衰变是完全随机的这一原理,就可以做成真随机数生成器。

既然如此,具体是怎么做的呢?

很简单。硬件上你只需准备一块Arduino开发板+一个盖革计数器。

这两者加起来只要300多块(板约40元,计数器约300元)

盖革计数器全称盖革-米勒计数器(Geiger-Müller counter),从1928年开始就是一个专门用来探测电离辐射强度的记数仪了。

它涉及的算法非常简单,写一个主循环,让寄存器从0加到n,等于n时,寄存器重置为0。

一旦在这个过程中检测到装置上方香蕉中的钾-40衰变放射出粒子,主循环就暂停,执行中断程序,将寄存器中的最后一个值作为随机数返回,然后寄存器再重置为0,继续循环。

比如,我们可以让寄存器从0加到15,并用十六进制表示这几个数(0-15也就为0-9、A-F),因此两位十六进制数就可以组成1个字节的随机数了,最终可以得到十进制范围内0-255的任意数。

ps.一个十六进制比如6F转换成二进制数就等于0110 1111,一共有8位,而一个字节正好等于8位二进制数。

这就是一个香蕉随机数生成器的诞生。

以往要想获得真正的随机数,常见的做法就是将一些大自然的物理现象产生的随机量转化成数字信息。

比如电阻热噪声、半导体中的雪崩效应、电路混沌效应等。

还有人甚至会用到更为复杂的量子现象,比如散粒噪声、光电效应,以及宇宙微波背景辐射,也就是前面提到的放射性衰变。

现在,只需要一个香蕉、300多块的硬件就可以做成,简直不要太方便。

事实上,GitHub上其实已经有很多类似项目,推特上也有一个专门账号曾每天发200多个随机数坚持了一年。

原来香蕉不光只是可以吃呀

其实,有关香蕉的妙用还不止此。

比如,它可以成为游戏手柄

就在今年,索尼申请了一项让人看起来觉得很有意思的专利,该专利立志把“便宜、简单、非电子的设备变为游戏外设”。

这不,他们就通过一些设备和技术把虚拟按键投射到了香蕉上,变成了手柄。

以及把两根香蕉通过扫描识别变成双摇杆,还能控制一些步行模拟器或飞行类的游戏。

再比如,香蕉还可以用来感受物理学科的神奇,即正电子。

因为钾-40在发生β+衰变为氩40时,会同时放出一个正电子。于是一位来自果壳的网友,提供了个方法:

买一根香蕉,捣烂涂在手上。

平均每1小时51分钟,就有一个正电子在你手上湮灭!”

嗯,感兴趣的旁友,可以试试。

当然,香蕉还可以作为平日里恶搞的工具。

准备个“香蕉+枣”“香蕉+雪碧”等组合,会让你的旁友发现新世界。

而在虚拟世界中,香蕉也有你想不到的用处。

《杀手3》游戏中,它就被设定成了一种武器!便携又好隐藏,连子弹的攻击都不可击穿。

由此也成为了一个极其受玩家好评的“暗杀”工具,分分钟拍晕一个人高马大的基地守卫不说,一旦化身“地雷”,敌人踩到立马摔倒躺尸。

 图源游研社

(越来越离谱了哈。)

最后,别忘了,一个人和香蕉的基因也是有41%的相似性哦~(手动狗头)

参考链接:
[1]https://www.mcgill.ca/oss/article/you-asked/it-true-banana-radioactive

[2]https://www.iaea.org/zh/newscenter/news/shi-yao-shi-fu-she
[3]https://www.mcgill.ca/oss/article/you-asked/it-true-banana-radioactive
[4]https://mp.weixin.qq.com/s/KqcoIqotWNLIxyPwX-Y2tg
[5]https://github.com/gbonacini/nuclear_random_number_generator
[6]https://twitter.com/Hacksterio/status/1519118940810711040

<END>
推荐阅读:
简历写着熟悉 Dubbo,居然连 Dubbo 线程池监控都不知道?
SQL优化的魅力!从 30248s 到 0.001s
互联网初中高级大厂面试题(9个G)

内容包含Java基础、JavaWeb、MySQL性能优化、JVM、锁、百万并发、消息队列、高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper......等技术栈!

戳阅读原文领取!                                  朕已阅 

浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报