21xrx.com
2024-06-03 03:27:24 Monday
登录
文章检索 我的文章 写文章
如何使用C++生成指定范围内的随机数
2023-07-05 06:09:09 深夜i     --     --
C++ 随机数生成 指定范围

在C++中生成随机数是一个非常有用的功能,无论是进行模拟、测试还是游戏开发等程序都需要使用。本文将介绍如何使用C++生成指定范围内的随机数。

首先,我们需要知道C++中生成随机数的方法。C++中提供了rand()函数用于生成随机数。但是这个函数生成的是一个0到RAND_MAX之间的随机整数,虽然可以使用取余运算符得到指定范围内的随机数,但这并不是一个好的实践,因为这样生成的随机数并不是均匀分布的。

为了避免这个问题,我们可以使用C++11提供的随机数生成器。在C++11中,新增了一个std::random_device类,用于生成随机种子。可以通过调用std::random_device()函数来生成随机种子,并将其作为参数传递给std::mt19937类,这个类是一个Mersenne Twister(梅森旋转器)随机数引擎,可以生成均匀分布的随机数。代码如下:


#include <iostream>

#include <random> // 包含随机数生成器相关头文件

int main() {

  std::random_device rd;

  std::mt19937 gen(rd());

  std::uniform_int_distribution<int> dis(1, 100); // 生成1~100之间的随机整数,包括1和100

  for(int i = 0; i < 10; ++i) {

    int random_num = dis(gen);

    std::cout << random_num << " ";

  }

  return 0;

}

上述代码中,使用std::random_device类生成随机种子,将随机种子传递给std::mt19937类,创建一个随机数引擎对象gen。接着,使用std::uniform_int_distribution类,传递最小值1和最大值100,创建一个随机整数分布。最后,使用分布对象调用gen()函数即可生成指定范围内的随机数。

代码输出的结果如下:


16 1 4 12 69 98 86 49 58 57

可以看到,生成的随机数在1~100的范围内,均匀分布。

总之,使用C++11提供的随机数生成器可以生成均匀分布的随机数。生成随机数需要在程序中根据需要来设置相应的随机数种子,然后使用随机数引擎和随机数字来模拟出需要的场景。通过本文的介绍,相信大家已经掌握了使用C++生成指定范围内的随机数的方法。

  
  

评论区

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