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

问题描述 投票:0回答:1
#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个回答
0
投票

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

例如,如果您以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
  • 硬币的价值是:1

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

© www.soinside.com 2019 - 2024. All rights reserved.