2016-03-31 4 views
-5

У меня проблема с моей дисперсией, когда я поставил 2,5,1,3 номера результат является 3,46, но правильным является 2,18дисперсия неправильный расчет с #

double result=0; 
string x1 = textBox1.Text; 
string[] tab = x1.Split(','); 
int n = tab.Length; 
double sum = 0; 
double ob = 0; 

for (int i = 0; i < n; i++) 
{ 
    sum = sum + double.Parse(tab[i]); 
    result = sum/n; 
    ob = (ob + Math.Pow((double.Parse(tab[i]) - result),2))/n; 

} 

textBox2.Text = ob.ToString(); 
+2

Не должны ли задерживать последние две строки в цикле for? –

+0

Почему 2,18 правильно? Что должен делать ваш код? –

ответ

1

Формула для стандартного отклонения составляет:

enter image description here

Как вы можете видеть, вы должны разделить на п после рассчитали сумму. Но ваше разделение находится в цикле. Если вы выполните эту операцию на выходе из цикла, вы получите правильный результат.

+0

thx mate works! – Ops

Смежные вопросы