21xrx.com
2025-03-24 20:09:43 Monday
文章检索 我的文章 写文章
C++生成不重复随机数的方法
2023-07-11 14:23:23 深夜i     36     0
C++ 生成 不重复 随机数 方法

C++是一种功能强大的编程语言,常用于开发各种类型的程序,包括游戏、应用程序等。在开发某些程序时,需要生成不重复的随机数。本文将介绍一些实现这一目标的常用方法。

1.利用数组和循环生成不重复的随机数

这种方法利用一个数组来保存已经生成的随机数,并且使用循环语句生成随机数。在生成随机数时,可以检查该随机数是否已经在数组中出现,若出现,继续生成;若未出现则将其添加到数组中,并输出。

示例代码:

int arr[100];  //定义一个数组,用于保存已经生成的随机数
int index = 0//记录数组的下标
int temp;    //用于保存每次生成的随机数
while (index < 100){  //循环生成100个随机数
  temp = rand() % 1000 + 1//生成1-1000的随机数
  //检查生成的随机数是否已经在数组中出现
  bool flag = true;
  for (int i = 0; i < index; i++){
    if (arr[i] == temp)
      flag = false;
      break;
    
  }
  //如果随机数未在数组中出现,将其添加到数组中
  if (flag){
    arr[index] = temp;
    index++;
    cout << temp << endl; //输出随机数
  }
}

2.利用set容器生成不重复的随机数

另一种方法是使用STL库中的set容器。set容器可以自动保证其内部元素的唯一性,所以只需要不断生成随机数,并将其添加到set容器中即可。当然,在添加之前需要检查该随机数是否已经在set中出现,若出现则继续生成。

示例代码:

set<int> s; //定义一个set容器
int temp;  //用于保存每次生成的随机数
while (s.size() < 100){  //循环生成100个随机数
  temp = rand() % 1000 + 1//生成1-1000的随机数
  //检查生成的随机数是否已经在set中出现
  if (s.count(temp) == 0){
    s.insert(temp);  //添加到set中
    cout << temp << endl; //输出随机数
  }
}

总之,以上两种方法都可以实现生成不重复的随机数,具体选择哪种方法取决于具体情况,例如数据量的大小、需要的随机数范围等。在开发时,可以根据具体需求选择最合适的方法。

  
  

评论区

请求出错了