21xrx.com
2024-11-05 22:05:20 Tuesday
登录
文章检索 我的文章 写文章
C++中如何生成指定范围的随机数
2023-06-27 02:57:38 深夜i     --     --
C++随机数生成器 指定范围的随机数 srand和rand函数 使用C++11的随机数库 库函

在C++编程中,生成随机数是很常见的需求。如果需要生成指定范围内的随机数,可以利用C++标准库中的随机数生成器和分布器。下面详细介绍如何实现。

1. 引入头文件

需要使用到C++标准库中的随机数生成器和分布器,分别位于 头文件中,因此需要将这两个头文件引入到程序中。


#include <random>

#include <chrono>

2. 设置随机数生成器

在生成随机数前,需要设置一个随机数生成器,以确定随机数的种子。一种简单的方式是利用系统时钟生成种子。


auto seed = std::chrono::system_clock::now().time_since_epoch().count();

std::default_random_engine generator(seed);

这里,利用C++标准库中的system_clock获取当前系统时间作为种子,并将该种子给随机数生成器赋值。

3. 设置随机数分布器

随机数分布器用于确定随机数的范围,首先需要确定随机数的数据类型。下面以整型为例,如果需要生成指定范围内的整型随机数,可以使用uniform_int_distribution。


int min = 1, max = 100;

std::uniform_int_distribution<int> distribution(min, max);

这里,将最小值和最大值分别传递给uniform_int_distribution构造函数,以创建一个范围为[1, 100]的随机数分布器。

4. 生成随机数

有了随机数生成器和分布器后,就可以生成指定范围内的随机数了,只需要使用分布器调用operator()函数即可。


int random_number = distribution(generator);

这里,将随机数生成器传递给分布器的operator()函数中,调用该函数将生成一个满足分布器要求的随机数。

完整代码如下:


#include <random>

#include <chrono>

#include <iostream>

int main() {

 // 设置随机数种子

 auto seed = std::chrono::system_clock::now().time_since_epoch().count();

 std::default_random_engine generator(seed);

 // 设置随机数范围

 int min = 1, max = 100;

 std::uniform_int_distribution<int> distribution(min, max);

 // 生成随机数

 int random_number = distribution(generator);

 // 打印随机数

 std::cout << "Generated random number: " << random_number << '\n';

 return 0;

}

上述代码将生成一个范围为[1, 100]的随机数,并打印在屏幕上。可以根据需要调整最小值和最大值,生成不同范围的随机数。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章