21xrx.com
2024-11-05 18:53:35 Tuesday
登录
文章检索 我的文章 写文章
如何在C++中生成指定范围内的随机数?
2023-07-13 17:45:39 深夜i     --     --
C++ 随机数 指定范围 生成 代码

在C++中生成随机数可以使用rand()函数,但是它只能生成一个在0到RAND_MAX之间的随机数。如果需要生成指定范围内的随机数,就需要进行一些数学计算。下面介绍两种方法。

方法一:使用rand()函数和取模运算

我们可以通过对rand()函数生成的随机数做取模运算,来获得指定范围内的随机数。例如,我们要生成1到100之间的随机数,可以使用下面的代码:


int range = 100;

int random = rand() % range + 1; //生成1到100之间的随机数

这里的range就是指定范围,对rand()函数生成的随机数做取模运算后加1,就可以得到指定范围内的随机数。

方法二:使用C++11中的随机数库

C++11中引入了一个新的随机数库,包含了一系列生成随机数的函数。使用这些函数可以更方便地生成指定范围内的随机数。下面的代码演示了如何生成1到100之间的随机数:


#include <iostream>

#include <random>

int main()

{

  std::random_device rd;

  std::mt19937 gen(rd());

  std::uniform_int_distribution<> dis(1, 100);

  std::cout << dis(gen) << std::endl; //生成1到100之间的随机数

  return 0;

}

这里的std::random_device rd是一个硬件随机数生成器,它会生成一个随机的种子,用于初始化伪随机数生成器std::mt19937。然后我们定义了一个uniform_int_distribution对象dis,它用于生成在指定范围内的整数随机数。调用dis(gen)函数即可生成指定范围内的随机数。

总结

以上就是在C++中生成指定范围内的随机数的两种方法。使用rand()函数和取模运算比较简单,但它生成的随机数可能不够随机。使用C++11中的随机数库可以生成更高质量的随机数,并且写起来也更方便。但是需要注意的是,std::random_device可能不是在所有平台上都可用,而且生成的随机数也可能不够随机。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复