<?php
$array = array();
$meanax = 300;
for($i = 0; $i < $meanax; $i++) {
$array[$i] = rand(0, $meanax-1);
}
$s = sd($array);
$mean = array_sum($array) / count($array);
echo "\nbefore\n";
var_dump(array('s' => $s, 'm' => $mean));
$n = count($array);
$x_new = 100000000;
$x_quer_strich = m_reverse($n, $mean, $x_new);
$s_new = sd_reverse($s, $n, $x_new, $x_quer_strich);
echo "\nreverse\n";
var_dump(array('s' => $s_new, 'm' => $x_quer_strich));
$array[$n+1] = $x_new;
$s = sd($array);
$mean = array_sum($array) / count($array);
echo "\nafter\n";
var_dump(array('s' => $s, 'm' => $mean));
echo "\nvalues array\n";
var_dump($array);
// Function to calculate square of value - mean
function sd_square($x, $mean) { return pow($x - $mean,2); }
// Function to calculate standard deviation (uses sd_square)
function sd($array) {
// square root of sum of squares devided by N-1
return sqrt(array_sum(array_map("sd_square", $array, array_fill(0,count($array), (array_sum($array) / count($array)) ) ) ) / (count($array)-1) );
}
function m_reverse($n, $mean, $x) {
return ( $n * $mean + $x ) / ( $n + 1 );
}
function sd_reverse($s, $n, $x, $mean) {
return sqrt( 1 / $n * ( ( $n - 1 ) * pow( $s, 2 ) + ( $x - $mean ) ) );
}
preferences:
28.55 ms | 402 KiB | 5 Q