21xrx.com
2025-03-23 15:25:11 Sunday
文章检索 我的文章 写文章
C++如何生成不重复的随机数
2023-06-22 17:25:21 深夜i     --     --
C++ 生成 不重复 随机数 算法

C++是一种广泛使用的编程语言,常用于开发各种类型的应用程序。在C++编程中,随机数是一个非常常见的概念。但是,如果需要生成不重复的随机数,则需要进行特殊处理。

在C++中生成不重复的随机数,可以使用以下几种方法。

方法一:

使用rand()函数来生成随机数。rand()函数是一个标准库函数,可以在C++编程中轻松生成随机数。要确保不生成重复的随机数,可以将生成的随机数存储在数组中,然后在生成新的随机数时检查新的随机数是否已经出现过。

例如,以下是使用rand()函数生成不重复的随机数的示例代码:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MAX = 10;
int main()
{
  int arr[MAX];
  srand(time(NULL));
  for (int i = 0; i < MAX; i++)
  {
    int r = rand() % MAX + 1;
    bool repeated = true;
    while (repeated)
    {
      repeated = false;
      for (int j = 0; j < i; j++)
      {
        if (arr[j] == r)
        {
          repeated = true;
          r = rand() % MAX + 1;
          break;
        }
      }
    }
    arr[i] = r;
    cout << arr[i] << " ";
  }
  return 0;
}

方法二:

使用random_shuffle()函数来生成随机数。random_shuffle()函数是另一个标准库函数,可随机重新排列元素。使用random_shuffle()函数可以打乱数组中的元素,这样就可以生成不重复的随机数。

例如,以下是使用random_shuffle()函数生成不重复的随机数的示例代码:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
const int MAX = 10;
int main()
{
  int arr[MAX];
  for (int i = 0; i < MAX; i++)
  {
    arr[i] = i + 1;
  }
  srand(time(NULL));
  random_shuffle(arr, arr + MAX);
  for (int i = 0; i < MAX; i++)
  {
    cout << arr[i] << " ";
  }
  return 0;
}

综上所述,C++中生成不重复的随机数并不难,可以使用rand()函数和random_shuffle()函数这两种标准库函数来实现。在使用这些函数时,需要考虑一些细节,以确保生成的随机数不重复。

  
  

评论区