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

How does modulo work when simulating a coin toss in c++?

本文关键字:何工作 工作 模拟 c++ 硬币      更新时间:2023-10-16
#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 << "Headsn";
}
else {
std::cout << "Tailsn";
}
}

这是否意味着有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。

在你的程序的情况下,你想要一个正面或反面,即两种可能的结果。通过在 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

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