提出的问题出现在第二年的Comp Science讲座中,同时讨论了在确定性计算设备中生成数字的不可能性.
这是唯一不依赖于非商品级硬件的建议.
随后,没有人会把他们的名声放在最后,无论是支持还是反对.
任何人都愿意支持或反对.如果是这样,如何提及可能的实施?
好吧,我猜这完全是主观的,但我正在考虑随机数生成器的熵源.大多数发电机都按当前时间播种,对吗?好吧,我很好奇其他资源可以用来生成完全有效的,随机的(宽松的定义)数字.
使用多个来源(例如时间+当前硬盘寻找时间[我们在这里是非常奇妙的])一起创建一个比单个来源更"随机"的数字?来源数量的逻辑限制是什么?真的够多少钱?选择时间只是因为方便吗?
如果不允许这种事情,请原谅我,但我对这些消息来源背后的理论感到好奇.
当我们实际测量某些东西时,我们究竟如何谈论"真正的随机"数字.我的意思是,测量几乎与随机性的相反.
索姆的文章说,例如,投掷骰子是"真正的随机".当然它不是伪随机的,但它是否随机?如果你有一台机器可以从完全相同的位置扔掉骰子并且总是在相同的方向上使用完全相同的力量:它总是会变成相同的数字吗?(我确实如此).
拜托,有人能帮我理解"真随机"数字吗?
由于计算机无法选择随机数(可以吗?)这个随机数是如何实际生成的.例如在C#中我们说,
Random.Next()
Run Code Online (Sandbox Code Playgroud)
里面发生了什么?
在Linux(C/C++代码)中创建安全随机数的(最佳)方法是什么,比一般rand()结果更随机,而不是伪作为OpenSSL BN_rand?
在Windows中,我发现这CryptGenRandom()是一个不错的选择.Linux中有没有相同的东西?
先感谢您.
是否可以通过物理过程模拟生成随机数?
如果我模拟骰子的物理卷(即你捡起它,用手摇晃它,把它放到桌子上并记录哪一面最后"向上"......)会产生一个"随机"数字或者会我只是有一个复杂的模拟,真的没有任何成就.
rand()似乎不会生成真正随机的数字.我有一个简单的程序,通过调用返回一个6位数字:
for i=1:6
r=rand(1,1)
end
Run Code Online (Sandbox Code Playgroud)
所以我昨天跑了4-5次.并保存了输出.今天我再次打开MATLAB并再次调用相同的函数4-5次.返回了相同的数字.
为什么会这样?
我应该提供随机种子或任何其他修复?
谢谢你的帮助!
我只是好奇...
你如何模拟随机性?它是如何在现代操作系统(Windows,Linux等)中完成的?
编辑:好的,不仅仅是生成随机数,这可以通过rand()大多数高级编程语言中的调用函数来完成.
但是,我更关心它是如何在现代操作系统中实际完成的.
random ×10
algorithm ×3
theory ×2
c# ×1
c++ ×1
entropy ×1
hardware ×1
linux ×1
matlab ×1
prng ×1
random-seed ×1
security ×1
simulation ×1
terminology ×1