0

从头开始,用 2 个骰子重复第 4 部分。这次我们使用 10,000 而不是 1000。

每个骰子可以是 1 - 6,因此 2 个骰子的总数必须在 2 - 12 范围内。

您的输出将在 2 – 12 的范围内。

请注意,掷出 2 的可能性比掷出 7 的可能性小得多,因为 2 只能掷出 1 + 1。但 7 可以是 6 + 1、5 + 2、4 + 3、3 + 4、2 + 5、1 + 6。

计算每个值出现的次数,并像上一部分一样输出该计数。

计算将 2、3、4 等滚动到 12 的时间百分比。以小数点后一位的精度输出百分比。在讨论板上发布这一结果。

我的问题是在我编写的程序中,以便输出滚动的数量。我在尝试使用百分比公式输出掷骰子的百分比时遇到了极端问题。

到目前为止,这是我的代码。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 11
#define TOTAL 10000


int main(void)   {

    int cnt = 0;
    int die1, die2, sum;
    int array[SIZE];
    srand(time(NULL));

    for (cnt = 0; cnt < SIZE; cnt++)
        array[cnt] = 0;

    for (cnt = 0; cnt < TOTAL; cnt++)
    {
        die1 = rand() % 6 + 1;
        die2 = rand() % 6 + 1;
        sum = die1 + die2;
        ++array[sum-2];
    }
    for (cnt = 0; cnt < SIZE; cnt++)
        printf("Number of %d's: %d\n", cnt+2, array[cnt]);
    system("pause");
}
4

2 回答 2

0

尝试

array[cnt]*100/SIZE;

您可能希望查看此二项式分布

于 2012-10-03T03:50:24.683 回答
0

暗示:

如果您将单个骰子的“计数”存储在一个数组中,也许您可​​能会有类似的东西:

array[0] 是我为单个骰子掷出“1”的次数;array[1] #/times 我滚动了一个“2”,等等。

也许对于两个骰子,您希望数组存储总和。例如:

array[0] 是我为两个骰子掷出“2”之和的#/次;array[1] #/times 我滚动了“3”,等等。

数组应该有多大?总和永远不会小于 2 或大于 12。所以“int[SIZE]”(“11”)就足够了。

在开始滚动之前,您需要将数组中的所有元素清除为“0”。

'希望这能让你指出正确的方向......

于 2012-10-03T03:58:22.503 回答