21xrx.com
2024-12-22 22:16:29 Sunday
登录
文章检索 我的文章 写文章
C++中rand函数的用法,如何产生不重复的随机数
2023-07-03 16:12:34 深夜i     --     --
C++ rand函数 随机数 不重复 产生

C++中的rand函数是一个常用的生成随机数的函数,其使用非常方便。使用该函数需要包含头文件 ,并调用srand函数进行初始化。

srand函数的参数是一个unsigned类型的整数,用于指定生成随机数的种子。如果不调用srand函数,则rand函数每次都会生成相同的序列。

生成随机数的语句为rand() % N,其中N是想要生成的随机数的个数。该语句可以产生0到N-1之间的随机数。

如果需要产生一组不重复的随机数,则需要先准备一个数组,并将其中的元素先初始化为0。然后,使用循环产生随机数,并判断这个数是否已经在数组中出现过。如果出现过,则重新生成。如果没有出现过,则将其存储在数组中,并继续下一次循环。

代码示例:


#include <cstdlib>

#include <ctime>

#include <iostream>

using namespace std;

int main() {

  const int N = 10; // 生成10个随机数

  int a[N] = {0}; // 初始化数组

  srand(time(NULL)); // 初始化rand函数

  for (int i = 0; i < N; i++) {

    int r; // 生成随机数

    while (true) {

      r = rand() % N;

      if (a[r] == 0) { // 如果这个随机数没有出现过

        a[r] = 1; // 将其标记为出现过

        cout << r << " "; // 输出该随机数

        break;

      }

    }

  }

  cout << endl; // 输出换行符,美化输出

  return 0;

}

需要注意的是,如果要产生一组比较大的不重复随机数,该算法的效率会比较低下,因为每次都需要遍历整个数组来判断随机数是否已经出现过。在这种情况下,可以考虑使用其他的算法,比如使用STL中的set或者unordered_set来保存已经出现过的随机数,以提高效率。

  
  

评论区

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