【发布时间】: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;这到底是什么意思。有人可以用其他例子向我解释这一点。
【问题讨论】:
-
整数的模运算符返回
lhs除以rhs的余数(分别为左侧和右侧)。rand()返回一个介于 0 和 RAND_MAX 之间的无符号整数,该整数至少为 32,767。如果您将某物除以二,您可以得到的最大余数是多少?三点?您可以通过搜索“rand() 返回什么”和“模数如何工作”en.cppreference.com/w/cpp/numeric/random/randen.cppreference.com/w/cpp/language/operator_arithmetic 自己发现这一点
标签: c++ random modulo coin-flipping