2011-05-05 98 views
0

我完成了标准偏差...但仍然存在差异,我无法解决...当我手动计算标准偏差时,答案与我的系统的输出不同...> 。 <标准偏差和模式

而对于mode..i使用的array..this是我的代码:

$sample = array($one[$ctr],$two[$ctr],$three[$ctr],$four[$ctr],$five[$ctr],$six[$ctr],$seven[$ctr],$eight[$ctr],$nine[$ctr],$ten[$ctr],$fda[$ctr]); 

rsort($sample); 
$holder = $sample[0]; 
//$holder = $mode; 

排序是successful..and我能得到的最高数... but..i需要使用fpdf将$持有人的价值打印到表格中...

but..when当我尝试运行系统..持有人...的值不打印在表格中...任何关于如何打印$持有人的价值的想法..或者为什么价值在表中不可见? >。再次感谢< ... :)

+1

请改进您的问题!显然与StdDev和Mod没有直接关系,这个问题似乎与管理输出有关。然而,没有与此输出逻辑相关的代码片段... – mjv 2011-05-05 01:05:05

+0

我的问题是关于模式... – 2011-05-05 01:35:32

回答

0

对于标准的偏差,尝试像

$count = count($sample); 
$avg = array_sum($sample)/$count; 

$standardDividend = 0; 

foreach($sample as $val) 
    $standardDividend += (pow(($val - $avg), 2)); 

$standardDev = pow(($standardDividend/$count), .5); 

理论上应该工作。

就模式而言,您正在使用错误的排序。 rsort()分类从最高到最低,而不是从现在到最不现在。所以一个$sample

$sample = array(1, 1, 1, 1, 1, 1, 1, 15); 

rsort($sample); 

$mode = = $sample[0]; 

将等于15,而不是1预期。请尝试:

$mode = arsort(array_count_values($sample)); 
$mode = $sample[0]; 

这将返回找到的第一个模式。如果有多个模式,它只会返回一个模式。而且,即使没有模式存在,它也会一直返回。但这是一个开始。

+0

>>我使用rsort,因为我需要把最高值放在索引[0] ..从你的例子.. .. 15是最高..所以我需要把15放在索引[0] ...我没有排序数组的索引,因此数组内的值...以便当15在索引[0]我可以将它分配给一个变量,这样我就可以将它打印在pdf表格(fpdf)中......问题是......我无法在表格中打印索引[0]的值..>。< – 2011-05-05 03:36:57