21xrx.com
2024-12-22 22:34:22 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()函数这两种标准库函数来实现。在使用这些函数时,需要考虑一些细节,以确保生成的随机数不重复。

  
  

评论区

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