【问题标题】:How does modulo work when simulating a coin toss in c++?在 C++ 中模拟抛硬币时,模数是如何工作的?
【发布时间】:2020-05-16 04:31:36
【问题描述】:
#include <iostream>
#include <stdlib.h>
#include <ctime>

int main() {

    // Create a number that's 0 or 1

    srand (time(NULL));
    int coin = rand() % 3;

    // If number is 0: Heads
    // If it is not 0: Tails

    if (coin == 0) {

        std::cout << "Heads\n";

    }
    else {

        std::cout << "Tails\n";

    }

}

这是否意味着有 1/2 的机会?有人可以向我彻底解释一下吗。----> int coin = rand() % 2;如果我将其更改为 int coin = rand() % 3;这到底是什么意思。有人可以用其他例子向我解释这一点。

【问题讨论】:

标签: c++ random modulo coin-flipping


【解决方案1】:

简单地说,% 运算符将随机数缩放到您想要的范围内。

例如,如果您编写为 rand() % 3,那么该行的输出将仅为 0、1 或 2。 (尝试用任何特定值代替 rand() )

  • 如果您在 rand() % 3 语句中输入 2 而不是 3,那么将只有两种可能的结果,即 0 或 1。
  • 现在,对于任何代替 3 的数字,可能结果的数量变为 N,其中 N 代替 3。

对于您的程序,您需要 HEADS 或 TAILS,即两种可能的结果。通过在 rand() % 3 语句中放置 2 而不是 3,变量“coin”只能有两个可能的值,即 0 或 1

尝试使用此代码:

#include<iostream>
#include<stdlib.h>
#include<ctime>
int main()
{
     srand (time(NULL));
     int rnd = rand();
     int coin = rnd % 2;

     std::cout<<"The value of coin is: "<<coin<<'\n';
     return 0;
}

你会发现,这个程序只会打印:

  • 硬币的价值是:0 OR
  • 硬币价值为:1

希望你能得到答案,胡安。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-02
    • 2014-05-25
    • 2012-06-24
    • 2018-07-08
    • 2019-10-28
    • 1970-01-01
    • 2019-07-07
    • 2018-07-27
    相关资源
    最近更新 更多