如何在C++中生成随机值的向量?

如何在C++中生成随机值的向量?

C++中生成随机值的向量可以使用STL库中的随机数发生器。STL库中的随机数发生器具有多种类型和参数,其中最常用的是Mersenne Twister算法,也称为MT19937。本文将介绍如何使用MT19937随机数发生器在C++中生成随机值的向量。

生成随机值的向量

在使用MT19937随机数发生器前,需要引入随机数头文件<random>。接着,可以定义一个MT19937随机数发生器和一个分布器,分布器可以生成不同范围内的随机数。我们可以将分布器定义为生成以0为中心,半径为100的一千个随机数。

#include <iostream>
#include <random>
#include <vector>
using namespace std;
int main()
{
    mt19937 rng;
    rng.seed(random_device()());
    uniform_int_distribution<int> dist(-100, 100);
    vector<int> random_vector;
    for (int i = 0; i < 1000; ++i) {
      random_vector.push_back(dist(rng));
}

上述代码中,mt19937采用默认 seed。为了获取真正的随机数据,程序利用random_device()在运行期获取真正的随机数据;通过调用seed方法,将获取到的随机数据整数值作为当做seed值以初始化随机数生成器。

在这段代码中,我们使用了uniform_int_distribution函数,生成整数分布,其中min、max参数分别表示在这个范围内会随机生成整形值,左闭右闭的区间。需要注意的是,如果你想在其他类型的元素上进行此操作,则需要相应不同类型的分布函数。

最后,使用for循环向向量中填充数据。此时,向量random_vector中包含由MT19937随机数发生器生成的一千个值不同的整数,随机生成的整数的范围在[-100, 100]之间。

为了使输出更易读,我们检查一些例子的随机向量――

cout << random_vector[0] << " " << random_vector[1] << " " << random_vector[2] << endl;

输出结果:

56 -6 -60

结论

生成随机值的向量是一项在C++中广泛使用的任务。可以使用STL库中的MT19937算法来生成随机向量,并可以根据需要调整范围和生成的项数。该算法随机数生成器的种子可以被设置,以便在需要重复随机数序列的情况下可以获得相同的随机数序列。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程