如果说 rand()的结果并不是很随机的话,如何在程序中做出更加随机的效果?

2018-09-09 15:19:48 +08:00
 showecho
当然程序上也不能太复杂,也并不是一定要完全随机
5131 次点击
所在节点    程序员
41 条回复
cgcs
2018-09-09 15:23:36 +08:00
新的 intel 处理器应该没这个问题了
zwh2698
2018-09-09 15:26:40 +08:00
使用 ssl 的随机数会有改善
thedrwu
2018-09-09 15:28:26 +08:00
熵池
hhsuan
2018-09-09 15:31:43 +08:00
单靠软件是不行的,必须有硬件支持
carlclone
2018-09-09 15:32:17 +08:00
随机的随机种子
herozhang
2018-09-09 15:35:15 +08:00
有个随机数的网站,说是从大气白噪声和宇宙微波辐射来产生随机数
AzadCypress
2018-09-09 15:36:27 +08:00
真随机拿设备采环境噪声做种子
GeruzoniAnsasu
2018-09-09 15:36:47 +08:00
shakespaces
2018-09-09 15:49:14 +08:00
单软件允许联网的话可以用网上的一些 api
允许硬件的话,linux 有 /dev/random 和 /dev/urandom 可以使用
wevsty
2018-09-09 15:51:09 +08:00
Windows:
C 可以使用 C Run-Time Library 中提供的 rand_s(),或者直接调用 API RtlGenRandom()

Linux
可以直接读取 /dev/random 或者 /dev/urandom 生产的数据。

跨平台
Cpp 可以使用 std::random_device (需要 C++11 以上)
402124773
2018-09-09 15:57:18 +08:00
linux 下会用中断增加熵,一些随机中断,是可以用来产生随机数的吧
zjyl1994
2018-09-09 16:51:11 +08:00
可以考虑用密码学的随机生成器,那个随机性比较高
alvin666
2018-09-09 17:20:14 +08:00
linux 用 ssh 生成密钥据说是用的 cpu 热信息,putty 生成 key 是用鼠标在某区域划动
silhouette
2018-09-09 17:21:24 +08:00
硬件随机啊
newtype0092
2018-09-09 17:21:55 +08:00
rand()不就是“程序上也不能太复杂,也并不是一定要完全随机”吗?
innoink
2018-09-09 18:04:26 +08:00
use getrandom()
winglight2016
2018-09-09 18:08:03 +08:00
有第三方服务,号称真随机,不过,理论上说,宇宙大爆炸是第一动因,其他都不过是必然的结果,所以真随机的说法也很可疑
1024MB
2018-09-09 18:12:09 +08:00
必没有,除非你能证明整个宇宙是随机的
s609926202
2018-09-09 18:42:29 +08:00
mt_rand ?
t6attack
2018-09-09 18:51:24 +08:00
如果你的开发中用得上,自然能接触到解决方案。比在这问的专业多了。

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

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

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

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

© 2021 V2EX