c ++ Do-While,来自数组的随机字,用于没有重复的字符串

时间:2015-02-22 15:52:32

标签: c++ random do-while

我想要做的是拥有一个单词数组,然后从数组中为一个字符串分配一个随机字,但没有字符串可以有相同的单词。我尝试了这个,但是当它运行时,它只会执行do-while然后进入下一次do-while留下重复。那么我所写的内容的哪一部分是不正确的,我该怎么做才能解决它?

string1 = words[rand()%110];

    do{
        string2 = words[rand()%110];
    }while (string == string1);

    do{
        string3 = words[rand()%110];
    }while (string3 == string1 && string3 == string2);

2 个答案:

答案 0 :(得分:3)

第一个循环似乎很好。也许您需要在第二个循环中编写||而不是&&

PS:在第一个循环中,它是while (string2 == string1);而不是while (string == string1); ??

答案 1 :(得分:0)

std::string getWord(std::vector<std::string> & words, size_t & unusedCount)
{
    size_t index = rand() % unusedCount;
    --unusedCount;
    std::swap(words[index], words[unusedCount]);
    return words[unusedCount];
}

std::vector<std::string> words;
// fill in words here
// ...
size_t wordsCount = words.size();
std::string string1 = getWord(word, wordsCount);
std::string string2 = getWord(word, wordsCount);
std::string string3 = getWord(word, wordsCount);