在C++中生成1到3之间的随机数

Generate random number between 1 and 3 in C++

本文关键字:之间 随机数 C++      更新时间:2023-10-16

可能重复:
从范围生成随机整数

我刚开始学习C++,我正在尝试生成一个1、2或3的随机整数。我四处搜索,我看到的所有生成随机数的例子都令人困惑,而且总是与我看到的上一个例子不同。有简单的方法吗?

模解是最简单的,但它通常会失去模的随机性,因为它倾向于"吃掉"结果的最低位。

一种更随机的方法是以线性方式将[0,1]映射到[A,b]上:

int roll(int min, int max)
{
   // x is in [0,1[
   double x = rand()/static_cast<double>(RAND_MAX+1); 
   // [0,1[ * (max - min) + min is in [min,max[
   int that = min + static_cast<int>( x * (max - min) );
   return that;
}

一般的版本是从这些派生出来的,以获得滚动(T最小,T最大(版本。

试试这个:

srand(time(NULL));
int randNum = (rand() % 3) + 1; // you don't need the (...) surrounding rand() % 3 but it helps for clarity

这是通过将rand函数的返回值的余数除以三(可以是0、1或2(并加一(得出1、2或3(来实现的。

请确保包含cstdlibctime标头。

此外,只调用srand一次,而不是每次生成随机数。