- 主题:C语言生成的第一个随机数很伪,有什么办法解决嘛?
实际需求是什么?怎样的性能要求?统计要求?可预测性要求?跨平台和依赖库要求?
无论如何c标准库的rand的接口是比较简陋的,很不容易用对。c++标准库的<random>就好多了,接口现代而丰富,通常统计用mt19937引擎,不可预测用random_device引擎就很好。密码学用的随机数都有自己的库,往往性能低一些,就是生成随机字节流。硬件相关的函数可能又快又好,比如rdrand这种。主流操作系统也都有自己的随机数,也主要用于密码学需求。
另外你的观察也并不准确,vc或gcc下rand使用的线性同余序列初值也不至于随种子递增,你的实验次数太少了。
【 在 sqsl 的大作中提到: 】
: 用的方法是:time()+srand()+rand()
:
: 虽然知道计算机无法生成真随机数,但这第一个数个也太假了吧,基本上第一个数正比
: ...................
--
修改:milksea FROM 124.64.16.*
FROM 124.64.16.*
通常热采样加纠偏的效果就足够好了,量子随机发生器我总觉得是噱头。
【 在 pigtracer 的大作中提到: 】
: 随便用用得了,你使用随机数的场景也没什么高要求的
:
: 我告诉你有一种设备,里面利用到了光量子测不准原理,提供高质量真随机,这设备卖几万,你买吗?
: ...................
--
FROM 114.249.220.*
我就是觉得意义很小。做到硅片里的热噪声采样要做到同样的性能,成本十分之一都不到,体积和能耗更小,也找不出什么安全问题。
【 在 pigtracer 的大作中提到: 】
: 这设备都有10年历史了,没什么噱头,论文也有
: Real time demonstration of high bitrate quantum random number generation with coherent laser light
: 【 在 milksea 的大作中提到: 】
: ...................
--
FROM 124.64.16.*