c++ - 在C++中模拟抛硬币时,模如何工作?

标签 c++ random modulo coin-flipping

#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,该怎么办?这到底是什么意思。有人可以用其他示例向我解释一下。

最佳答案

简单来说,%运算符会将随机数缩放到所需范围内。

例如,如果您以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;
    }
    

    您会发现,该程序将仅打印以下任一内容:
  • 硬币的值(value)是:0
  • 硬币的值(value)是:1

  • ,我希望你能回答,娟。

    关于c++ - 在C++中模拟抛硬币时,模如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61831918/

    相关文章:

    c++ - 在 C++ 中返回字符串和不同 vector 数据类型的映射

    c++ - 重载 [] 但其结果在与其他运算符交互之前未解析 (c++)

    php - 如何随机化 PHP 中的对象数组?

    python - 根据随机数打开唯一的文本文件

    excel - 当值大于或等于数十亿时,VBA 中的 Mod 会出现溢出错误

    c++ - 哈希表键与取值复杂性

    c++ - 工厂方法和循环依赖

    c++ - 初始化 srand 的推荐方法?

    java - 我不懂模数,我有学习障碍

    c - 有符号整数模无符号整数会产生无意义的结果