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言語を使った基本的な統計処理を学ぶことができ、乱数を使ってデータを生成することで、実際のデータを用いた統計分析を行うことができます。
この基本的な流れを理解することで、さらに複雑なデータ分析や統計処理を行うための基盤を作ることができます。


コメント