❶ 急求~ 用c語言編程的相對標准差的程序
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double std_dev(double *data,int n); //計算標准差,傳輸數據為n個double類型數組
double relative(double *data,int n);//計算相對標准差。
int main(){
double data[100];
int i=0;
int n=0;
printf("最多輸入99個數字,輸入任意字母開始計算\n");
while(1){
if(scanf("%lf",&data[i++])!=1)break;
n++;
}//while
printf("輸入了%d個數據\n",n);
printf("std_dev:%g\n",std_dev(data,n));
printf("relative std_dev:%g%%\n",relative(data,n));
system("pause");
return 0;
}//main
double std_dev(double *data,int n){
double ret=0,average=0,sum=0;
int i=0;
double *p=data;
while(i<n){
sum+=*p;
p++;
i++;
}//while
average=sum/n;
sum=0;
p=data;
for(i=0;i<n;i++){
sum+=(*p - average)*(*p - average);
p++;
}//for
return sqrt(sum/n);
}//function std_dev
double relative(double *data,int n){
double ret=0,average=0,sum=0;
int i=0;
double *p=data;
while(i<n){
i++;
sum+=*p;
p++;
}//while
average=sum/n;
return std_dev(data,n)/average*100;
}//fun relative
❷ 標准差的計算公式
標准差的計算公式:
(2)標准差公式的c語言擴展閱讀:
標准誤表示的是抽樣的誤差。因為從一個總體中可以抽取出無數多種樣本,每一個樣本的數據都是對總體的數據的估計。標准誤代表的就是當前的樣本對總體數據的估計,標准誤代表的就是樣本均數與總體均數的相對誤差。
標准誤是由樣本的標准差除以樣本容量的開平方來計算的。從這里可以看到,標准誤更大的是受到樣本容量的影響。樣本容量越大,標准誤越小,那麼抽樣誤差就越小,就表明所抽取的樣本能夠較好地代表總體。
❸ 非常急急!!!!用C語言函數求標准差,還有平均數
#include<stdio.h>
#include"math.h"
main()
{
float sum=0,s=0,mean,stand;
int i,j,value,a[100],n=0;
printf("Input values (input -1 to stop):\n");
scanf("%d",&value);
while(value!=-1&&n<=100)
{
a[n]=value;
sum+=a[n];
scanf("%d",&value);
n++;
}
mean=sum/n;
printf("Number of items: %d\n\n",n);
for(j=0;j<n;j++)
s+=(a[j]-mean)*(a[j]-mean);
stand=sqrt(s/n);
printf("Mean:%f\n\n",mean);
printf("standard deviation:%f\n\n",stand);}
❹ 關於求平均數和標准差的C語言問題
pjz=pjz1(10,n[9]);
s=st1(10,n[9],pjz);
把n[9]改為n
❺ 用C語言如何算平均數和方差及標准差
由於沒有指明數據的來源,下面就從文本文件"data.txt"中取出一些學生的身高數據,並計算平均值,方差和標准差!代碼如下:
#include<stdio.h>
#include <math.h>
#define hh printf(" =================================== ");
void main()
{
FILE *fp;
float a[520],x,avr,fc,bzc,t,sum=0.0;
int i,k=0;
fp=fopen("D:\data.txt","r");
if(fp==NULL)
printf("文件打開失敗! ");
else
{
printf("身高數據: ");
fscanf(fp,"%f",&x);
while(x!=0)
{
a[k++]=x;
printf("%.0f ",x);
sum+=x;
fscanf(fp,"%f",&x);
}
avr=sum/k;
sum=0;
for(i=0;i<k;i++)
sum+=(a[i]-avr)*(a[i]-avr);
fc=sum/(k-1);
bzc=sqrt(fc);hh
printf(" 學生人數:%d ",k);
printf(" 身高均值:%.2f ",avr);
printf(" 身高方差:%.2f ",fc);
printf("身高標准差:%.2f ",bzc);
}
hh
fclose(fp);
}
(5)標准差公式的c語言擴展閱讀:
c語言的特點
1、C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2、C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3、不同的變數類型可以用結構體(struct)組合在一起。
4、只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。
5、部份的變數類型可以轉換,例如整型和字元型變數。
6、通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7、預編譯處理(preprocessor)讓C語言的編譯更具有彈性。
❻ 用c語言定義一個函數,計算平均數,方差,標准差。(請用指針完成)
//計算平均數,方差,標准差。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#defineN100
voidTongJi(doublea[],intn,double*aver,double*vari,double*stdDev){
//對長度為n的數組a進行統計,統計其平均值aver、方差vari、標准差stdDev
inti;
double*p,aver2;
*aver=0.0;
for(p=a+(n-1);p>=a;--p){
*aver+=*p;//累加各元素
aver2+=(*p)*(*p);//累加各元素的平方
}
*aver/=n;//求平均值
aver2/=n;//求平方的平均值
*vari=aver2-(*aver)*(*aver);//計算方差
*stdDev=sqrt(*vari);//計算標准差
}
intmain(){
doublea[N],pj,fc,bzc;
inti;
srand(time(NULL));
for(i=0;i<N;++i){
a[i]=rand()/(RAND_MAX+1.0);//產生隨機小數[0,1)
printf("%lg",a[i]);
}
TongJi(a,N,&pj,&fc,&bzc);
printf(" PingJun=%lg,FangCha=%lg,BiaoZhunCha=%lg",pj,fc,bzc);
printf(" Finished! ");
getch();
return0;
}
順便做了一個測試:產生100個隨機小數,得到其平均值大概在0.5左右,方差在0.08左右,標准差在0.28左右。說明系統自帶的隨機數發生器還是比較均勻的。
❼ 標准差的計算公式是什麼
標准差公式:樣本標准差=方差的算術平方根=s=sqrt(((x1-x)²+(x2-x)²+……(xn-x)²)/(n-1))。總體標准差=σ=sqrt(((x1-x)²+(x2-x)²+……(xn-x)²)/n)。
標准差詳解及示例
標准差是一組數值自平均值分散開來的程度的一種測量觀念。一個較大的標准差,代表大部分的數值和其平均值之間差異較大;一個較小的標准差,代表這些數值較接近平均值。
例如,兩組數的集合{0,5,9,14}和{5,6,8,9}其平均值都是7,但第二個集合具有較小的標准差。
❽ C語言求平均值,標准差
#include "stdio.h"
#include "math.h"
#define N 100
void main()
{
int a[N],n,i;
float aver,s;
float sum=0,e=0;
printf("請輸入樣本量:");
scanf("%d",&n);
printf("請輸入%d個樣本:",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
aver=sum/n;
for(i=0;i<n;i++)
e+=(a[i]-aver)*(a[i]-aver);
e/=n-1;
s=sqrt(e);
printf("平均數為:%.2f,方差為:%.2f,標准差為:%.2f\n",aver,e,s);
}
❾ 在C++中如何用C++的語言來表示求均值和標准差 獎勵10分!
/*求所有數據平均值*/
int average( dataList * list )
{
int sum = 0;
for ( int i = 0; i < list->length; i++ )
{
sum += list->data[i];
}
return sum/list->length;
}
/*求標准差*/
int var( dataList * list )
{
int averg;
int varX = 0; // 方差
int stdDev; // 標准差
averg = average( list );
for ( int i = 0; i < list->length; i++ )
{
varX += ( list->data[i] - averg)*( list->data[i] - averg);
}
varX /= list->length;
stdDev = sqrt( varX );
return ;
}
兩個函數
一個是求平均數的
一個是求標准差的
數據存在形如
typedef struct
{
int data[100];
int length; // 現有數據個數
}dataList;
的結構體里
❿ C語言輸出均值與標准差,幫我看看哪裡錯了。。
均值的就沒錯了,估計你的方差公式寫錯了,給你改了,看注釋
#include<stdio.h>
#include<math.h>
void main()
{
int n,i;
scanf("%d",&n);
float a[100],s1,s2,x1,x2;
s1=0;s2=0;
for(i=1;i<=n;i++)
scanf("%f",&a[i]); //是&a[i]
for(i=1;i<=n;i++)
{
s1=s1+a[i];
s2=s2+a[i]*a[i];
}
x1=s1/n;
x2=sqrt(s2/(double)n); //強制轉換成double
printf("%.4f %.4f",x1,x2);
}