当前位置: 首页 > 知识库问答 >
问题:

为什么人们说在使用随机数发生器时有模偏置?

祁坚壁
2023-03-14

我已经看到这个问题被问了很多,但从来没有看到一个真正具体的答案。所以我将在这里发表一篇文章,希望能帮助人们理解为什么在使用随机数生成器时会有“模偏置”,比如C++中的rand()

共有1个答案

漆雕升
2023-03-14

因此RAND()是一个伪随机数生成器,它选择0和RAND_MAX之间的自然数,后者是Cstdlib中定义的常量(有关RAND()的一般概述,请参阅本文)。

现在,如果你想生成一个介于0和2之间的随机数,会发生什么呢?为了解释起见,假设rand_max是10,我决定通过调用rand()%3来生成一个介于0和2之间的随机数。但是,rand()%3不会以相等的概率产生0和2之间的数字!

rand()返回0、3、6或9时,rand()%3==0。因此,P(0)=4/11

int x; 
do {
    x = rand();
} while (x >= n);
int x;

do {
    x = rand();
} while (x >= (RAND_MAX - RAND_MAX % n));

x %= n;

永远困惑

 类似资料:
  • 问题内容: 您将如何测试随机数生成器是否正在生成实际的随机数? 我的方法:首先建立一个大小为M的散列,其中M是素数。然后取由随机数生成器生成的数字,并用M取mod,然后看它是否填充了所有散列或仅填充了一部分。那是我的方法。我们可以通过可视化证明吗? 由于我对测试的了解很少。您能建议我彻底解决这个问题吗?提前致谢 问题答案: 您应该意识到,您不能 保证 随机数生成器正常工作。请注意,即使是[1,10

  • 这个脚本应该以随机生成的延迟滚动浏览网站上的每个容器。对于循环中的每次迭代,我要将ms的“暂停”替换为一个在和秒之间随机生成的数字。 随机数生成器: 就像这样工作很好。在每次迭代之后,会有2秒的暂停。但是,当我移除注释以添加行以随机化每次迭代之间的时间时,值(它应该滚动到哪个容器)一开始很好,但后来也变成随机的。 控制台输出: 我该怎么解决这个?

  • 本文向大家介绍请说说viewport是什么?在什么时候下使用?有什么作用?相关面试题,主要包含被问及请说说viewport是什么?在什么时候下使用?有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 视口当前可见的部分叫做可视视口(visual viewport)。可视视口可能会比布局视口(layout viewport )更小,因为当用户缩小浏览器缩放比例时,布局视口不变,而可视视口变小了。

  • 为什么我使用node开发的discord机器人无法登录?这个代理是可以访问discord.com的。 以下是index.js的代码 如果改用https代理,则报错 Error: Client network socket disconnected before secure TLS connection was established 我曾以为这是windows的问题,做了一个Linux虚拟机,在

  • 我找不到解决办法,所以我来了。我制造了一个不和谐的机器人。py rewrite为我的discord服务器编写,我想实现一个功能,当用户加入语音频道时,我的机器人会说些什么。 我甚至不能让机器人加入语音聊天,因为它会给出所有可能的错误。提前谢谢。 这就是我所尝试的: 还有这个 他们都给出了这个错误