0

ゼロから始めて、パート 4 を 2 つのサイコロで繰り返します。今回は 1000 ではなく 10,000 を使用します。

各サイコロは 1 ~ 6 のいずれかなので、2 つのサイコロの合計は 2 ~ 12 の範囲内でなければなりません。

出力は 2 ~ 12 の範囲になります。

2 は 1 + 1 しかロールできないため、7 をロールするよりも 2 をロールする可能性がはるかに低いことに注意してください。ただし、7 は 6 + 1、5 + 2、4 + 3、3 + になる可能性があります。 4、2 + 5、1 + 6。

前の部分と同様に、各値が発生する回数をカウントし、そのカウントを出力します。

2、3、4 などを 12 までロールする回数の割合を計算します。小数点以下 1 桁の精度で割合を出力します。この結果を掲示板に投稿してください。

私の質問は、転がった量を出力するように書いた私のプログラムです。パーセンテージ式を使用してロールされたサイコロの % を出力しようとすると、極端な問題が発生します。

これまでの私のコードは次のとおりです。

#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 つのダイスに対して「1」をロールした #/回です。配列[1] #/回「2」など。

おそらく2 つのサイコロの場合、配列に合計を格納する必要があります。例えば:

array[0] は、両方のサイコロの合計が「2」になった #/回です。array[1] ロールした回数 "3" など。

配列の大きさはどれくらいですか?合計が 2 未満または 12 を超えることはありません。したがって、"int[SIZE]" ("11") で十分です。

また、ローリングを開始する前に、配列内のすべての要素を「0」にクリアする必要があります。

「あなたが正しい方向に向けられることを願っています...

于 2012-10-03T03:58:22.503 に答える