21xrx.com
2024-06-03 00:43:40 Monday
登录
文章检索 我的文章 写文章
C++生成不重复随机数的方法
2023-07-11 14:23:23 深夜i     --     --
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; //输出随机数

  }

}

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

  
  

评论区

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