2

これが非常に単純な質問であることを願っていますが、配列内の文字列をランダムにするにはどうすればよいですか

たとえば、vaules ill の場合、これを行います

`

#include <cstdlib> 
#include <iostream>
using namespace std;
int main() 
{
srand ( time(NULL) ); //initialize the random seed


const char arrayNum[4] = {'1', '3', '7', '9'};

int RandIndex = rand() % 4;
int RandIndex_2 = rand() % 4;
int RandIndex_3 = rand() % 4;
int RandIndex_4 = rand() % 4; //generates a random number between 0 and 3

cout << arrayNum[RandIndex] << endl;;
system("PAUSE");
return 0;
}    `

arraynum内に文字列がある場合、これをどのように適用できますか

私は答えを求めて私の検索でこのようなものに出くわしました

std::string textArray[4] = {"Cake", "Toast", "Butter", "Jelly"};

しかし、私が遭遇したのは、それ自体では変化しない16進の答えだけです。したがって、おそらくランダム化されていないと思います。

4

1 に答える 1

5

You could use std::random_shuffle

#include <string>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>

int main() {
    std::srand(std::time(0));
    std::string str = "123456212";
    std::random_shuffle(str.begin(),str.end());
    std::cout << str;
}

Possible output: 412536212

If you're using C++11, you can do the same with C-Style arrays like so:

int main() {
    std::srand(std::time(0));
    std::string str[4] = {"Cake", "Toast", "Butter", "Jelly"};
    std::random_shuffle(std::begin(str),std::end(str));
    for(auto& i : str)
        std::cout << i << '\n';
}

Or if you're lacking a C++11 compiler you can do the alternative:

int main() {
    std::srand(std::time(0));
    std::string str[4] = {"Cake", "Toast", "Butter", "Jelly"};
    std::random_shuffle(str, str + sizeof(str)/sizeof(str[0]));
    for(size_t i = 0; i < 4; ++i) 
        std::cout << str[i] << '\n';
}
于 2013-01-01T08:42:22.873 に答える