0

数値をランダム化するためにいくつか検索して見つけましたが、文字列には当てはまらないと思います....たとえば、配列に次のようなリストがあります。

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

これをランダム化するにはどうすればよいですか、またはそれらをすべて入れ替えてごちゃ混ぜにしますか?

4

3 に答える 3

4

必要がなければ、車輪を再発明しないでください。

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

C++03 では、独自のbeginandを実装せずにend:

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

などを使用しない限りstd::vector、これを関数に渡してこれを参照ではなく行うには、後者を追加のサイズ引数とともに使用する必要があることに注意してください。

于 2012-10-20T04:22:31.323 に答える
1

あなたは好きにすることができます

 #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;
}
于 2012-10-20T04:22:33.227 に答える
0

楽しみのための単なる代替手段(ランダムに並べ替え):

std::sort(restaurants, restaurants + sizeof(restaurants) / sizeof(std::string), [](int x, int y) -> bool { return rand() % 100 >= 50; });
于 2012-10-20T04:43:45.487 に答える