哪个更随机?
rand()
或者
rand() + rand()
或者
rand() * rand()
只是如何确定这一点?我是说。这真的让我很困惑!感觉可能都是一样随机的,但怎么可能绝对确定呢?!
任何人?
“更随机”的概念并没有真正的意义。您的三种方法给出了不同的随机数分布。我可以在 Matlab 中说明这一点。首先定义一个函数f
,当调用它时,它会为您提供一个包含 10,000 个随机数的数组:
f = @() rand(10000,1);
现在看看你的三个方法的分布。
您的第一种方法hist(f())
给出了均匀分布:
您的第二种方法hist(f() + f())
给出了在中心达到峰值的分布:
您的第三种方法hist(f() .* f())
给出了一个分布,其中接近零的数字更有可能:
至于熵的数量,我想,是可比的。
如果您需要比目前更多的熵(随机性),请使用加密强的随机生成器。
为什么它们具有可比性 --- 因为如果攻击者可以猜测下一个伪随机值返回
rand()
接下来他猜对他来说并不难
rand()*rand()
然而,关于不同分布的争论是重要且有效的!