0

以下が質問の全文です。

2 つのサイコロを振ることをシミュレートするプログラムを作成します。プログラムは、rand を使用して最初のサイコロを転がし、再度 rand を使用して 2 番目のサイコロを振る必要があります。次に、2 つの値の合計を計算する必要があります。[注: 各サイコロは 1 から 6 までの整数値を示すことができるため、2 つの値の合計は 2 から 12 まで変化し、7 が最も頻繁な合計であり、2 と 12 が最も頻繁でない合計です。 2 つのサイコロの組み合わせは 36 通りあります。プログラムは、2 つのサイコロを 3,600 回振る必要があります。一次元配列を使用して、考えられる各合計が出現する回数を集計します。結果を表形式で出力します。また、合計が妥当かどうかを判断します (つまり、7 を振るには 6 つの方法があるため、すべてのロールの約 6 分の 1 が 7 になるはずです)。

結果は次のようになります。

Question 2
Please enter the seed : 2

ここに画像の説明を入力

「期待される」列を生成する方法がわかりません。 ここに画像の説明を入力

これが私のプログラムです:(メインはQ2_main()です)

#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;

double total_Array[11];
double expected_Array[11];
double actual_Array[11];
int seed;

void initialization_of_Array()
{
    for (int counter=0; counter < 12; counter++)
    {
        total_Array[counter] = 0;
        expected_Array[counter] = 0;
        actual_Array[counter] = 0;
    }
}

void show_heading_line()
{
    cout << setw(5) << "Sum" 
        << setw(10) << "Total" 
        << setw(17) << "Expected" 
        << setw(16) << "Actual" 
        << endl;
}

void show_Data_Results_line(int sum, int total, double expected, double actual)
{
    cout << setw(5) << sum
        << setw(10) << total
        << setw(16) << expected << "%"
        << setw(15) << actual << "%"
        << endl;
}

void calculation_of_total()
{
    int die_1, die_2;
    for (int counter = 1; counter <= 3600; counter++)
    {
        die_1 = 1 + rand() % 6;
        die_2 = 1 + rand() % 6;
        total_Array[((die_1 + die_2)-2)]++;
    }
}

void calculation_of_expect()
{

}

void calculation_of_actual()
{
    for (int counter = 0; counter < 11; counter++)
    {
        actual_Array[counter] = (total_Array[counter] / 3600.0) * 100.0;
    }
}

void rollDice_Operation()
{
    calculation_of_total();
    calculation_of_expect();
    calculation_of_actual();
}

void print_Result()
{
    show_heading_line();
    for (int counter = 0; counter <= 10; counter++)
    {
        show_Data_Results_line((counter+2), total_Array[counter], 1, actual_Array[counter]);
    }
}

void Q2_main()
{
    cout << setprecision(3) << fixed;
    initialization_of_Array();
    cout << "Please enter the seed : ";
    cin >> seed;
    srand(seed);
    rollDice_Operation();
    print_Result();
}

「予想される」列を処理するためのヒントを教えてください。


ご清聴ありがとうございました

4

3 に答える 3

1
      1   2   3   4   5   6
    +---+---+---+---+---+---+
  1 | 2 | 3 | 4 | 5 | 6 | 7 |
    +---+---+---+---+---+---+
  2 | 3 | 4 | 5 | 6 | 7 | 8 |
    +---+---+---+---+---+---+
  3 | 4 | 5 | 6 | 7 | 8 | 9 |
    +---+---+---+---+---+---+
  4 | 5 | 6 | 7 | 8 | 9 | 10|
    +---+---+---+---+---+---+
  5 | 6 | 7 | 8 | 9 | 10| 11|
    +---+---+---+---+---+---+
  6 | 7 | 8 | 9 | 10| 11| 12|
    +---+---+---+---+---+---+

したがって、9 の期待確率を計算するには、上の表の組み合わせの数を合計 36 で割った 9 とします。つまり、4/36 です。

于 2013-11-15T13:58:47.597 に答える