根据偶然性选择三种结果中的一种

时间:2016-02-04 20:49:57

标签: c

我是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;
}

我的问题是它的打印有时打印几件东西,有时它什么都不打印。我想每次打印只打印一件东西。

1 个答案:

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