我搜索并找到了一些随机数字,但我认为它不适用于字符串。...例如,我在数组中有这样的列表:
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中,无需实施您自己的begin
和end
:
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; });