21xrx.com
2025-03-26 14:37:19 Wednesday
文章检索 我的文章 写文章
C++ 随机洗牌
2023-07-05 05:13:28 深夜i     18     0
C++ 随机 洗牌 数组 随机数生成器

在许多情况下,我们需要对一些数据进行随机排列,例如洗牌一组扑克牌、随机选取样本等。在 C++中,我们可以使用随机数生成器库来实现这一功能。

随机数生成器库提供了一个名为 rand() 的函数,该函数可以生成一个范围在0到RAND_MAX之间的随机整数。在使用 rand() 函数之前,需要使用 srand() 函数来初始化随机数生成器的种子。

下面是一个示例程序,演示如何使用 C++ 随机洗牌。

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
  //初始化随机数生成器的种子
  srand((unsigned)time(NULL));
  //创建一组扑克牌
  vector<string> poker;
  poker.push_back("A");
  poker.push_back("2");
  poker.push_back("3");
  poker.push_back("4");
  poker.push_back("5");
  poker.push_back("6");
  poker.push_back("7");
  poker.push_back("8");
  poker.push_back("9");
  poker.push_back("10");
  poker.push_back("J");
  poker.push_back("Q");
  poker.push_back("K");
  //随机洗牌
  random_shuffle(poker.begin(), poker.end());
  //输出结果
  for(int i = 0; i < poker.size(); i++)
  {
    cout << poker[i] << " ";
  }
  cout << endl;
  return 0;
}

在上面的示例程序中,我们首先使用 srand() 函数将当前时间戳作为随机数生成器的种子,以确保每次运行程序时都能生成不同的随机数。然后,我们创建了一组扑克牌,使用 random_shuffle() 函数对其进行随机排列。最后,我们遍历已洗牌的牌组并输出结果。

总之,C++ 随机洗牌是利用随机数生成器库来实现的。这是一种快速有效的方法,可用于许多实际应用中。

  
  

评论区