S3.Blog

14 Июля 2026
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

Расчет медианы

Дата последнего изменения: 2 Июня 2011
Метки статьи: Готовые решения, JavaScript, PHP
Медиана – это полусумма срединных значений ранжированного ряда.
 

К примеру, возьмем ряд (например, это также может быть выборка из БД):

23, 11, 21, 5, 17, 66, 34, 9

..и ранжируем (упорядочим) его:

5, 9, 11, 17, 21, 23, 34, 66

Срединными (лежащими в середине) значениями являются числа 17 и 21.

Их сумма: 17 + 21 = 38

Медиана данного ряда: 38 / 2 = 19

Вот и вся медиана.

Обычно данная величина нужна для расчета, например, среднего значения зарплаты по всей компании, среднего срока нахождения товаров на складе, среднего количества участников форумов, т.е. используется в разных масштабах и пределах.

В простом приближении, если в MySQL есть таблица ‘table’ вида:

id value
1 13
2 444
3 0
4 67
5 54
6 21
7 49
8 72

то расчет медианы выглядит так:
<?php
$mediana = 0;
$i = 0; // счетчик количества элементов массива
$mediana_data = array(); // массив для значений из БД
$db = mysqli_connect('host','login','pass','dbname');
$query = 'SELECT value FROM table ORDER BY value ASC'; // упорядочим данные заранее
$st = $db->query($query);
while ($result = mysqli_fetch_assoc($st)) {
	$mediana_data[] = $result['value'];
	$i++;
}
// вычисляем медиану

// если количество элементов четное, то имеется два срединных значения,
// по которым вычисляется медиана
if (is_int($i/2)) { $el = $i/2; $el2 = $el + 1; $mediana = ($mediana_data[$el] + $mediana_data[$el2]) / 2; } // если количество элементов нечетное, то медиана равна центральному элементу ряда else { $el = round($i/2); $mediana = $mediana_data[$el]; } ?>

а на JavaScript расчет медианы выглядит так:
<input type="text" id="data.1" value=""><br>
<input type="text" id="data.2" value=""><br>
<input type="text" id="data.3" value=""><br>
<input type="text" id="data.4" value=""><br>
<input type="text" id="data.5" value=""><br>
<input type="text" id="data.6" value=""><br>

<input type="button" value="Расчитать медиану" onclick="calculation_mediana()"><br>
<input type="text" id="mediana" value=""><br>

<script language="javascript">
function calculation_mediana() {
	var input_data = new Array();
	var el_mediana = document.getElementById('mediana');
	if (! el_mediana) {
		return;
	}

	for (var i=1; i<=6; i++) {
		var el = document.getElementById('data.' + i);
		if (el) {
			el.value = el.value.replace(/,/g, '.');
			el.value = parseFloat(el.value) || 0;
			input_data[input_data.length] = el.value;
		}
	}

	if (input_data.length == 0) {
		el_mediana.value = 0;
		return;
	}

	input_data.sort(sort_number);


	var length_ary = input_data.length/2;
	if (length_ary == Math.ceil(input_data.length/2)) {
		el_mediana.value = (parseFloat(input_data[length_ary-1])+parseFloat(input_data[length_ary]))/2;
	} else {
		length_ary == Math.ceil(length_ary);
		el_mediana.value = input_data[length_ary-1];
	}
}
function sort_number(a,b) {
	return a - b;
}
</script>

Использованы статьи:
Расчет медианы в PHP+MySQL
Wiki: Медиана (статистика)
Контрольная работа: Мода. Медиана. Способы их расчета




Похожие материалы:




olga (гость) • ответить
А количество серединных значений, которые берутся для расчета медианы зависит от количесвта значений в ранжируемом ряду?
Александрответить
грубо говоря, при нечетном количестве значений, берется одно центральное среднее, при четном - два
Serega (гость) • ответить
ошибка:
else {
length_ary == Math.ceil(length_ary);
el_mediana.value = input_data[length_ary-1];
}

заменить на
else {
length_ary = Math.ceil(length_ary);
el_mediana.value = input_data[length_ary-1];
}
Tinys (гость) • ответить
[url=https://tinyfishing2.ioTtiny fishing[/url] is a casual mobile game that integrates fishing with resource management components. Participants will engage in a fishing expedition, where they can capture several species of fish, enhance their gear, and augment their fishing skills.
Tinys (гость) • ответить
Tiny fishing is a casual mobile game that integrates fishing with resource management components. Participants will engage in a fishing expedition, where they can capture several species of fish, enhance their gear, and augment their fishing skills.
smsha (гость) • ответить
The best part of drive mad is that it stays challenging without becoming frustrating. Every failed attempt feels like part of learning the track instead of random luck.
Eaoraltyответить
This is a super clear explanation of how to calculate the median! I always get it confused with the mean, so seeing the step-by-step with examples really helps. It reminds me a bit of figuring out the perfect line in Snow Rider . Good stuff for practical applications too.


 
 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.