如何随机将装满字符串的阵列随机?C



我搜索并找到了一些随机数字,但我认为它不适用于字符串。...例如,我在数组中有这样的列表:

string restaurants[] = {"Texas Roadhouse,","On The Border,","Olive Garden,","Panda       Express,","Cracker Barrel,","IHOP,","Panda Express,","Pei Wei"};

我将如何随机化一个或将它们全部交换并弄乱它们?

如果不需要,请不要重新发明轮子。

std::random_shuffle(std::begin(restaurants), std::end(restaurants));

在C 03中,无需实施您自己的beginend

std::random_shuffle(restaurants, restaurants + sizeof restaurants / sizeof restaurants[0]);

请注意,除非您使用诸如 std::vector之类的东西,否则将其传递到一个函数中以执行此操作,则需要将后者与其他大小参数一起使用。

您可以喜欢

 #include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
using namespace std;
int main ()
{
  static string numbers[] =  {"Texas Roadhouse,","On The Border,","Olive Garden,","Panda       Express,","Cracker Barrel,","IHOP,","Panda Express,","Pei Wei"};
  srand(time(0));
  int rand_index = rand() % 10;
  cout << numbers[rand_index] << endl;
  string input;
  getline(cin,input);
  cout << (((input=="even")==(rand_index+1)%2==0) ? "Right." : "Wrong.") << endl;
}

只是有趣的替代方案(随机排序):

std::sort(restaurants, restaurants + sizeof(restaurants) / sizeof(std::string), [](int x, int y) -> bool { return rand() % 100 >= 50; });

最新更新