我是C / C ++的新手。我想写一个程序,25%的时间打印"马",50%的时间打印"狗" 25%的时间打印" cat"。
到目前为止,我有以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(0));
if ((rand() % 100) < 25) {
printf("horse\n");
}
if ((rand() % 100) < 50) {
printf("dog\n");
}
if ((rand() % 100) < 25) {
printf("cat\n");
}
return 0;
}
我的问题是它的打印有时打印几件东西,有时它什么都不打印。我想每次打印只打印一件东西。
答案 0 :(得分:4)
试试这个:
int main()
{
srand(time(0));
int percent = rand() % 100;
if (percent < 25) {
printf("horse\n");
} else if (percent < 75) {
printf("dog\n");
} else {
printf("cat\n");
}
return 0;
}
您的代码的问题在于您为每个结果“滚动”。这使得所有结果彼此独立。我上面做的是滚动随机数一次。然后我们看看每个结果的累积概率。这确保了一个结果将会运行。另请注意使用else if
。