如何获得一个真随机源(在一定程度上)

2017-09-13 23:04:16 +08:00
 dekira

做模拟程序的时候想用随机数,然而 rand 函数的随机性不满足要求(可能是我的强迫症导致的)......

目前设想:有一个稳定的随机源,不断产生随机信号或者随机数,然后传给计算机用于模拟。

然而,如何获得一个真随机源? 我比较倾向于做一个产生随机信号的电路,然后经过转换发送给电脑用于程序调试。然而: 1.怎么保证随机性,有没有已经被验证的随机源 2.低成本情况下(假设制造成本 500 元一下),可以达到足够的精度和获取速度吗(比如+100.00~-99.99 ,10 个 /ms )? 各位大神有没有制造物理随机源的经验?求指导了

4859 次点击
所在节点    硬件
16 条回复
am241
2017-09-13 23:18:52 +08:00
Intel drng
另外很多通信芯片都内置硬件随机数源,也就十几块钱
am241
2017-09-13 23:21:18 +08:00
比较常用的是 /dev/urandom 和 /dev/random,应该也足够用
clearbug
2017-09-13 23:22:44 +08:00
真随机源一般就是采集大气温度,或者用户鼠标移动等动作,而且现在的 cpu 都内置真随机数了的!(书上这么说的,没亲自测试过)
momocraft
2017-09-13 23:30:55 +08:00
比 rand() 强的伪随机算法很多,比如 SFMT / http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/

如果你真的非常想自己做,白噪声 by definition 应该是真随机。至于精度要看你买多少钱的 ADC。
geelaw
2017-09-13 23:37:12 +08:00
定义“一定程度”

VS2017 实现的 random_device 是密码学安全的。
SilentDepth
2017-09-14 00:27:03 +08:00
如果接受网络接口的话:random.org ,一个利用大气噪声产生随机数的服务
Shura
2017-09-14 01:38:45 +08:00
boter
2017-09-14 01:47:35 +08:00
ryd994
2017-09-14 03:20:29 +08:00
1.配合 hash,假设 hash 够好,输出应该是平均分布的,而熵来自于物理过程
2.你要估计熵源有多少熵

学学 Linux,采集从用户输入,磁盘寻道,和 RNG 设备的熵,全部 XOR 进熵池
/dev/random 保证随机度,保证输出不超过可用的熵
/dev/urandom 在熵池不足的时候,会以现有熵做种子,配合伪随机算法,可以有无限量的输出,但是不保证输出的熵够
lty1993
2017-09-14 03:53:20 +08:00
yidinghe
2017-09-14 08:09:02 +08:00
让用户随机移动鼠标
zjqzxc
2017-09-14 08:14:05 +08:00
买个 sdr 接收机?
lloovve
2017-09-14 08:16:58 +08:00
Esp32 里面有真随机
tony1016
2017-09-14 09:33:11 +08:00
做个双缝干涉实验??
dekira
2017-09-14 09:56:18 +08:00
@am241 @ryd994 已经开始转到 linux 了......hash 嘛,我还不熟悉
@geelaw 目前正在用的就是 random_device,效果似乎还可以
@zjqzxc 第一次听说诶,去查一下先

感谢大家啦
@am241
@clearbug
@SilentDepth
gnemux
2017-09-14 15:58:47 +08:00
开个脑洞:如果我们的宇宙是由更高层生命创造的虚拟现实,那么大气噪音甚至任何自然界所谓客观存在的现象是不是也有可能是高层生命使用伪随机数产生的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/390510

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX