21xrx.com
2024-11-22 07:53:18 Friday
登录
文章检索 我的文章 写文章
C++从n个数中随机选m个数的实现
2023-07-08 13:03:18 深夜i     --     --
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()函数生成随机数和数组存储数据,注意要设置随机数种子以保证随机性。这种思路可以应用到很多领域,如随机取样等。

  
  

评论区

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