2

我希望这是一个非常简单的问题,但是如何在数组中随机一个字符串

例如,对于 vaules 不适这样做

`

#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"};

但我遇到的只是一个不会自行改变的十六进制答案。因此,因此我将假设它甚至可能不是随机的。

4

1 回答 1

5

你可以使用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;
}

可能的输出:412536212

如果您使用的是 C++11,则可以对 C 样式数组执行相同操作,如下所示:

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';
}

或者,如果您缺少 C++11 编译器,您可以选择:

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 回答