ハウスダストAです。今日はC言語での標準偏差の求め方を紹介します。ネット上にはやり方はいろいろ転がっていますが、自分もは始めたばかりの初心者なんでスマートなことはせず泥臭く求める方法を紹介します。
まずはこちらのページで標準偏差をチェック!!!!
https://sci-pursuit.com/math/statistics/standard-deviation.html
↑わかりやすく標準偏差を紹介されています。
問題
n件の整数型データを配列に入力し、その平均値と標準偏差を求める式を作成せよ
↑今回はこの問題についてやっていきます。
プログラム
#include <stdio.h>
#include <math.h> //√の役割のsqrtが出てくるときに必要になります
int main(void) {
int i; //for文を回すためのやつ
int n; //データの数を保存するやつ
int data[64]; //データを格納するための配列
int wa1=0; //入力したデータの和を格納するやつ
int wa2=0; //偏差の2乗の和を格納するやつ
double heikin1; //入力したデータの平均値を入れるやつ
double heikin2; //偏差の2乗の和の平均値を入れるやつ
double hensa; //標準偏差を入れるやつ
printf("何件のデータを入力しますか?:"); scanf("%d",&n);
//データ件数を入力し取り込みます。数字なので&に注意!
for(i=0;i<n;i++){
printf("%d件目:",i+1); scanf("%d",&data[i]);
}
//データを入力
for(i=0;i<n;i++){
wa1=wa1+data[i];
}
//(データの和)=(データの和)+データの値 をすることによってデータの値の総和を求めています
heikin1=(double)wa1/n;
//入力したデータの平均値をもとめていて 平均=(データの和)÷(データの件数)を計算しています。(double)をつけることによってint型のものを無理やるdouble型にすることができます
for(i=0;i<n;i++){
wa2=wa2+(data[i]-heikin1)*(data[i]-heikin1);
}
//ここでは偏差の2乗の和を求めていて (偏差の2乗の和)=(偏差の2乗の和)+(データの値ーデータの平均)×(データの値ーデータの平均)を件数分繰り返すことで求めています。
heikin2=(double)wa2/n;
//偏差の2乗の和の平均を求めています。(偏差の2乗の和の平均)=(偏差の2乗の和)÷(データの件数)
hensa=(double)sqrt(heikin2);
//標準偏差を求めています。sqrtは√のことで 標準偏差=√偏差の2乗の和の平均
printf("入力した値の平均値は%.1f\n標準偏差は%.1fです。\n",heikin1,hensa);
//出力です。double型なので%dではないことに気を付けましょう
return(0);
}
実行結果
[i001ff@localhost ~]$ gcc h.c -o h.out -lm ←math.hがつくときはコンパイルの時に-lmが必要です
[i001ff@localhost ~]$ ./h.out
何件のデータを入力しますか?:3
1件目:12
2件目:44
3件目:33
入力した値の平均値は29.7
標準偏差は13.3です。
どうですかわかりましたか?もしまだわからなかったりエラーが出てしまったりしたらコメントしていただければコメントしていただけたら可能な限り答えます。
それではハウスダストAでした!!!
おすすめの参考書
|