21xrx.com
2025-03-23 15:25:14 Sunday
文章检索 我的文章 写文章
C++生成不重复的随机数
2023-06-22 16:01:22 深夜i     12     0
C++ 生成 不重复 随机数

随机数是计算机领域中常用的一个概念,它可以为我们的程序加入一些随机性,使得程序的执行结果更为多样化。在C++中生成随机数的方法也比较简单,但是如果需要生成一系列不重复的随机数,就需要一些特殊的处理。

首先,我们需要使用C++标准库中的random函数来生成随机数。在使用之前,需要提前调用srand函数对随机数种子进行初始化,否则我们每次生成的随机数都是一样的。代码如下:

#include <iostream>
#include <random>
#include <ctime>
using namespace std;
int main()
{
  srand((unsigned)time(NULL)); // 初始化随机数种子
  int num = rand() % 100 + 1; // 生成1-100之间的随机数
  cout << "生成的随机数为:" << num << endl;
  return 0;
}

如果我们需要生成多个不重复的随机数,可以使用vector来存储已经生成的数,每次生成随机数前判断是否已经存在于vector中,如果存在则重新生成。代码如下:

#include <iostream>
#include <random>
#include <ctime>
#include <vector>
using namespace std;
int main()
{
  srand((unsigned)time(NULL)); // 初始化随机数种子
  vector<int> nums; // 存储随机数
  int N = 10; // 需要生成的随机数个数
  while (nums.size() < N) { // 循环直到生成足够的随机数
    int num = rand() % 100 + 1; // 生成1-100之间的随机数
    bool flag = true;
    for (int i = 0; i < nums.size(); i++) {
      if (num == nums[i]) // 判断当前生成数是否已经存在
        flag = false;
        break;
      
    }
    if (flag) {
      nums.push_back(num); // 将新生成的随机数存入vector
    }
  }
  for (int i = 0; i < N; i++) {
    cout << nums[i] << " ";
  }
  cout << endl;
  return 0;
}

通过以上代码,我们可以生成指定个数的不重复随机数,为程序的随机性增添更多可能性。

  
  

评论区