21xrx.com
2024-12-28 12:34:01 Saturday
登录
文章检索 我的文章 写文章
C++实现生成不重复的随机数
2023-06-28 16:40:22 深夜i     --     --
C++ 生成随机数 不重复

C++是一种流行的编程语言,它具有强大的功能和灵活性,能够实现各种应用程序。其中,生成随机数是C++中的一个常见需求。特别是当我们需要生成一系列不重复的随机数时,就需要用到一些更复杂的算法。

在C++中,生成随机数通常使用rand()函数,该函数可以生成一个介于0和RAND_MAX之间的随机整数。然而,如果我们想要生成一系列不重复的随机数,我们需要使用更高级的算法来确保每个随机数在序列中只出现一次。

下面是一种C++实现生成不重复的随机数的方法:

1. 首先,我们需要定义一个数组来存储我们要生成的随机数。数组的大小应该与我们想要生成的随机数的数量相同。

2. 接下来,使用rand()函数来生成随机整数,并将其存储在数组中。我们还需要使用一个循环来确保每个随机数都是唯一的。如果随机数已经存在于数组中,我们需要再次生成另一个随机数,直到找到一个没有出现过的数。

3. 最后,我们可以使用一个循环来输出生成的随机数,以确保它们都是唯一的。

下面是一个简单的代码示例,实现了生成不重复的随机数的过程:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  const int SIZE = 10;    //定义数组大小

  int list[SIZE];       //定义存储随机数的数组

  int randomNum;       //定义随机数变量

  bool foundDuplicate;    //定义标记变量用于标记是否有重复数

  srand(time(nullptr));    //初始化随机种子

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

  {

    foundDuplicate = true; //初始化标记变量

    while(foundDuplicate)

    {

      randomNum = rand() % 100 + 1;  //生成随机数

      foundDuplicate = false;     //假设没有重复数

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

      {

        if (list[j] == randomNum)  //检查是否有重复数

        

          foundDuplicate = true; //如果有重复数

      }

    }

    list[i] = randomNum;        //将随机数存储到数组中

  }

  for (int i = 0; i < SIZE; i++)     //输出生成的随机数

  {

    cout << list[i] << " ";

  }

  cout << endl;

  return 0;

}

在上面的示例代码中,我们定义了一个长度为10的数组,并初始化了随机种子。然后,我们在循环中生成随机数,并使用嵌套循环来确保每个随机数都是唯一的。

最后,我们使用另一个循环来输出生成的随机数,以确保它们都是不重复的。可以看到,这种方法非常简单,并且可以很容易地扩展到更大的数据集。

总之,实现生成不重复的随机数可以帮助我们解决各种实际问题,例如电子游戏中的随机地图生成,或者在博弈论中用于随机选择策略等。C++中提供了各种算法和函数,可以帮助我们实现这些需求。

  
  

评论区

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