Cプログラムで乱数を使って20人分の5教科の点数を生成し、統計値を計算する方法

C言語関連

Cプログラムを使って、20人分の5教科(国語、英語、数学、理科、社会)の点数を乱数で生成し、個人別合計、平均、標準偏差、科目別平均を計算する方法を解説します。このプログラムの目的は、学生の成績データを生成して統計情報を求めることです。

乱数を使った点数の生成

まず、各生徒の点数を乱数を使って生成します。点数は30~100点の範囲内で生成し、個々の教科についてデータを作成します。C言語の標準ライブラリであるrand()関数を使うことで、簡単に乱数を生成できます。

#include 
#include 

#define STUDENTS 20
#define SUBJECTS 5

int main() {
    int scores[STUDENTS][SUBJECTS];
    int i, j;
    srand(time(NULL));
    for (i = 0; i < STUDENTS; i++) {
        for (j = 0; j < SUBJECTS; j++) {
            scores[i][j] = rand() % 71 + 30;  // 30 to 100
        }
    }

    for (i = 0; i < STUDENTS; i++) {
        printf("Student %d: ", i + 1);
        for (j = 0; j < SUBJECTS; j++) {
            printf("%d ", scores[i][j]);
        }
        printf("\n");
    }
    return 0;
}

このコードでは、20人の生徒(STUDENTS)と5つの教科(SUBJECTS)に対して乱数で点数を生成し、出力しています。

個人合計と平均の計算

次に、個人別合計点と平均点を計算します。個々の生徒の合計点は、5教科の点数の合計であり、平均点はその合計を5で割ったものです。C言語では、合計点と平均点を計算するために、簡単に変数を使って加算や除算を行うことができます。

for (i = 0; i < STUDENTS; i++) {
    int total = 0;
    for (j = 0; j < SUBJECTS; j++) {
        total += scores[i][j];
    }
    double average = total / (double)SUBJECTS;
    printf("Student %d Total: %d, Average: %.2f\n", i + 1, total, average);
}

このコードを追加することで、各生徒の合計点と平均点を表示することができます。

標準偏差の計算

次に、標準偏差を計算します。標準偏差は、データのばらつきを示す指標で、各点数と平均の差の二乗の平均を平方根した値です。以下のコードでは、標準偏差を計算して表示します。

#include 

for (i = 0; i < STUDENTS; i++) {
    double total = 0.0;
    double variance = 0.0;
    for (j = 0; j < SUBJECTS; j++) {
        total += scores[i][j];
    }
    double average = total / SUBJECTS;

    for (j = 0; j < SUBJECTS; j++) {
        variance += pow(scores[i][j] - average, 2);
    }
    variance /= SUBJECTS;
    double stddev = sqrt(variance);
    printf("Student %d Stddev: %.2f\n", i + 1, stddev);
}

これにより、各生徒の標準偏差が計算され、データのばらつき具合を知ることができます。

科目別平均の計算

最後に、各教科の平均点を計算します。科目別平均は、全ての生徒のその教科の点数の合計を生徒数で割ったものです。以下のコードを追加することで、科目別平均を求めることができます。

for (j = 0; j < SUBJECTS; j++) {
    int total = 0;
    for (i = 0; i < STUDENTS; i++) {
        total += scores[i][j];
    }
    double subject_avg = total / (double)STUDENTS;
    printf("Subject %d Average: %.2f\n", j + 1, subject_avg);
}

このコードは、各科目の平均点を計算し、表示することができます。

まとめ

このプログラムでは、乱数を使って20人分の5教科の点数を生成し、個人別合計、平均、標準偏差、科目別平均を求める方法を解説しました。C言語を使った基本的な統計処理を学ぶことができ、乱数を使ってデータを生成することで、実際のデータを用いた統計分析を行うことができます。

この基本的な流れを理解することで、さらに複雑なデータ分析や統計処理を行うための基盤を作ることができます。

コメント

タイトルとURLをコピーしました