根据输入的数字生成字符

时间:2014-02-09 13:04:05

标签: c++

// direction generator
static const char alpha[] = "DLP";
int d;
char genRandom()
{
    return alpha[rand() % d +1];
}
// end of generator 

while(true)
{
    cout << genRandom();
}

它应该生成d个字符。例如:

输入d:

7

随机生成器的输出:

PDLDPLP

我得到无限数量的字符串,程序不会在7处停止。它会一直持续下去。

2 个答案:

答案 0 :(得分:3)

它会永远运行,因为您使用while(true)

您可以使用计数器,当达到您需要的数字时停止计数器。

for (int counter=0; counter<d; counter++)
{
    cout << genRandom();
}

修改:您需要修复genRandom()d>2时会出现超出范围的错误。

尝试更改

return alpha[rand() % d +1];

return alpha[rand() % strlen(alpha)];

答案 1 :(得分:0)

正如herohuyongtao所说,你正在使用while(true)

尝试这样的事情:

char GetRandomChar(){
    char differentCharacters[] = {'a', 'b', 'c'}
    int numOfCharacters = 3;
    return differentCharacters[rand() % numOfCharacters ];
}

int main(){
    int n;
    int numChars = 0;
    std::cin >> n;
    while(numChars++ < n){
        std::cout << GetRandomChar();
    }
}
相关问题