在C++中生成1到3之间的随机数
Generate random number between 1 and 3 in C++
可能重复:
从范围生成随机整数
我刚开始学习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(来实现的。
请确保包含cstdlib
和ctime
标头。
此外,只调用srand
一次,而不是每次生成随机数。
相关文章:
- 查找彼此之间具有不同最小距离的随机数
- 使用 std::binomial_distribution 在范围之间生成随机数
- 如何在 C++ 中获取 5 到 -5 之间的随机数
- C++ 和 Python 实现之间的不同伪随机数
- 生成随机数,并保证在给定域之间覆盖所有
- 我如何确保我的随机数在兰德生成的0和1之间不是0
- 在[0,1)C 之间生成一个随机数
- 0-1之间的随机数生成以填充容器
- 盒子muller随机数在C 中的0到1之间
- 在random_device和seed_seq之间做出决定,为多个随机数序列生成种子
- C++ 中介于 0 和 1 之间的随机数
- 本应生成 2 个介于 1 和 9 之间的随机数的程序C++只生成 6 和 9 并且没有正确循环
- 在0到1之间生成随机数
- 分叉进程之间的随机数是相同的
- 如何在 c++ 中生成 0 到 4 之间的随机数
- 介于 2 个值之间的随机数
- 如何在我存储的两个变量之间生成随机数
- 使用 C++ 的 1 到 10 之间的随机数
- 如何在c++中生成一个介于1和16之间的随机数
- C++生成一个介于 0 和 100,000 之间的随机数