21xrx.com
2024-12-22 22:09:54 Sunday
登录
文章检索 我的文章 写文章
C++生成不重复的随机数
2023-06-22 16:01:22 深夜i     --     --
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;

}

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

  
  

评论区

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