寻找一个清晰简洁的网页,解释为什么较低位的随机数通常不是随机的

寻找一个清晰简洁的网页,解释为什么较低位的随机数通常不是随机的,第1张

概述我正在组建一个内部“每个开发人员应该知道”的维基页面. 我看到很多关于rand()%N的讨论,但没有一个网页可以解释这一切. 例如,我很好奇这个问题是否只针对C和Linux,或者它是否也适用于Windows,C ,. Java,.Net,Python,Perl. 请帮助我深究这一点.此外,数字是如何非随机的?谢谢! 我没有一个网页可以推荐你,但我可能有一个“信封背面”的解释,这将有所帮助.简单随机 我正在组建一个内部“每个开发人员应该知道”的维基页面.

我看到很多关于rand()%N的讨论,但没有一个网页可以解释这一切.

例如,我很好奇这个问题是否只针对C和Linux,或者它是否也适用于windows,C,. Java,.Net,Python,Perl.

请帮助我深究这一点.此外,数字是如何非随机的?谢谢!

解决方法 我没有一个网页可以推荐你,但我可能有一个“信封背面”的解释,这将有所帮助.简单随机数生成器的工作方式是遵循这些步骤

>使用生成的最后一个数字n或种子编号.
>将该数字乘以一个特殊的大数字
>添加另一个特殊的大号
>除以第三个特殊的大数,然后扔掉剩余的数字
>返回结果

现在,如果您考虑除了步骤4以外的所有事情,您正在进行 *** 作,其中只有较低位可以改变结果的低位.添加1001和100 … 00001将以… 02结束(哈,你虽然我说的是基地2,但实际上这些数字是基础12的咯咯笑声.)无论计算的高端是什么.同样,当你乘以它时,它将以1结尾,无论如何.

在高端也存在类似的问题,10亿次十亿次总是占据数百个枯萎数的贡献.这表明中间是好事发生的地方.这里有很多位相互作用 – 高,中,低.

这就是除法步骤的目的,它切断了结果的底部块,而没有那么多的交互.顶部块通常不会被切断,因为当乘法不再适合机器字时,计算机会丢弃高位.

最后虽然截止点有些随意,你可能比设计算法的人更挑剔,但仍然会砍掉几个比特.

对于你有多糟糕的问题,他们可能非常糟糕.最简单的方法是将单个数字分组为元组并绘制图形.因此,如果您有随机数a,b,c,d,…图(a,b),(c,d),……并查看结果.这被称为光谱测试,兰德失败了.这个我有一个尝试http://random.mat.sbg.ac.at/results/karl/spectraltest/的链接

总结

以上是内存溢出为你收集整理的寻找一个清晰简洁的网页,解释为什么较低位的随机数通常不是随机的全部内容,希望文章能够帮你解决寻找一个清晰简洁的网页,解释为什么较低位的随机数通常不是随机的所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1062315.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存