21xrx.com
2024-09-19 09:46:20 Thursday
登录
文章检索 我的文章 写文章
C++生成随机数组
2023-06-24 06:40:53 深夜i     --     --
C++ 生成 随机数组

C++程序员们经常需要生成随机数组,用于测试算法的正确性或者生成随机数据。在C++中,可以通过几种方式来生成随机数组,下面介绍其中三种方法。

## 方法一:使用rand()生成随机数

C++中的`rand()`函数可以生成一个范围在`0~RAND_MAX`之间的伪随机整数。因此,我们可以通过生成RAND_MAX以内的随机数来生成随机数组。

例如,下面的代码生成了一个有n个元素的随机数组:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  srand((unsigned int)time(NULL));

  int n = 10; // 数组大小

  int* arr = new int[n]; // 动态分配数组内存

  for(int i=0; i<n; i++)

  {

    arr[i] = rand() % RAND_MAX; // 随机生成0~RAND_MAX范围内的随机数

    cout << arr[i] << " ";

  }

  delete[] arr; // 释放数组内存

  return 0;

}

## 方法二:使用random库生成随机数

C++11引入了` `库,该库提供了更加强大的随机数生成器,可以生成各种类型的随机数。和rand()函数类似,也可以生成一个范围在`0~N`之间的随机整数。

在下面的代码中,我们使用`uniform_int_distribution`来生成以指定范围内的随机整数:


#include <iostream>

#include <random>

using namespace std;

int main()

{

  random_device rd; // 随机数设备

  mt19937 gen(rd()); // 随机数生成器

  int n = 10; // 数组大小

  int* arr = new int[n]; // 动态分配数组内存

  uniform_int_distribution<int> dist(0, RAND_MAX); // 设置随机数生成范围

  for(int i=0; i<n; i++)

  {

    arr[i] = dist(gen); // 生成随机数

    cout << arr[i] << " ";

  }

  delete[] arr; // 释放数组内存

  return 0;

}

## 方法三:使用algorithm库生成有序随机数组

如果生成一个确保有序的随机数组,可以使用STL提供的`generate()`和`sort()`函数。

例如,下面的代码使用`generate()`函数生成一个范围在`0~N`之间的随机整数,并使用`sort()`函数排序数组:


#include <iostream>

#include <random>

#include <algorithm>

using namespace std;

int main()

{

  random_device rd; // 随机数设备

  mt19937 gen(rd()); // 随机数生成器

  int n = 10; // 数组大小

  int* arr = new int[n]; // 动态分配数组内存

  uniform_int_distribution<int> dist(0, RAND_MAX); // 设置随机数生成范围

  generate(arr, arr+n, [&](){ return dist(gen); }); // 生成随机数组

  sort(arr, arr+n); // 排序数组

  for(int i=0; i<n; i++)

  {

    cout << arr[i] << " ";

  }

  delete[] arr; // 释放数组内存

  return 0;

}

综上所述,我们可以使用不同的方法来生成随机数组。其中,方法一和方法二比较简单易懂,适合初学者。方法三则适合需要生成有序随机数组的情况。

  
  

评论区

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