21xrx.com
2025-06-29 11:24:15 Sunday
文章检索 我的文章 写文章
C++从n个数中随机选m个数的实现
2023-07-08 13:03:18 深夜i     35     0
C++ 随机选择 n个数 m个数 实现

C++是一种通用编程语言,应用极广泛。在很多场景下,需要从一个数列中随机选取一些数。本文将介绍如何使用C++实现从n个数中随机选取m个数。

在C++中,可以使用rand()函数生成随机数,但需要先设置随机数种子。常见的设置种子的方式是使用时间作为种子,使用 头文件中的time()函数来获取当前时间:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main () {
  // 设置随机数种子为当前时间
  srand((unsigned)time(NULL));
  // 生成0到99之间的随机数
  cout << rand() % 100 << endl;
  return 0;
}

通过以上代码,可以生成0到99之间的随机数。接下来介绍如何从n个数中随机选取m个数。一种简单的方法是使用数组来存储这n个数,然后生成m个不同的随机数作为下标,对应的即为选取的m个数。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main () {
  // 设置随机数种子为当前时间
  srand((unsigned)time(NULL));
  int n = 10;
  int m = 5;
  int a[n] = 2;
  int b[m] = {0};
  for (int i = 0; i < m; i++) {
   int j = rand() % n;
   // 如果已选过该数,则重新选取
   while (b[i] == a[j])
     j = rand() % n;
   b[i] = a[j];
  }
  for (int i = 0; i < m; i++)
   cout << b[i] << " ";
  return 0;
}

以上代码中,a数组存储了10个数,b数组用于存储选取的5个数。在每次循环中,使用rand()函数生成一个随机下标j,如果该下标对应的数已经被选取过,则重新生成下标。最终,输出b数组即为选取的5个数。

总结来说,C++实现从n个数中随机选取m个数的方法比较简单,主要是利用rand()函数生成随机数和数组存储数据,注意要设置随机数种子以保证随机性。这种思路可以应用到很多领域,如随机取样等。

  
  

评论区