// 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处停止。它会一直持续下去。
答案 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();
}
}