"Один дурак столько вопросов назадаёт, что и десять умных не ответят."
"Именно людям, разработавшим теорию стабилизации, мы обязаны относительно гуманным миром, в котором живём." (Сергей Гуревич, обозреватель "Волжского Автостроителя")
"Многие стремятся спасать мир. Но они гораздо больше сделали бы для спасения мира, если бы спасали самих себя."
Предлагаю очередную систему подсчёта репутации.
В современном мире оценки за посты суммируются независимо от того, кто и сколько поставил оценок. Это неправильно. Давайте введём одномерный массив, в котором представлено, от кого конкретно получены оценки. Тогда примерный массив будет выглядеть так:
К чему это всё? Допустим, на форуме появился товарищ, который решил ставить мне минусы "за жизнь", только за участие в обсуждениях. На возраст наплевать. Типа, жизнь - <нехорошее слово>. Он не знал, что напал на бывшего выпускника научного физико-технического вуза.
for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0;
Репутация № 4
Заявка на научно-техническое изобретение
"Бороться и искать, найти и не сдаваться!"
"Один дурак столько вопросов назадаёт, что и десять умных не ответят."
"Именно людям, разработавшим теорию стабилизации, мы обязаны относительно гуманным миром, в котором живём." (Сергей Гуревич, обозреватель "Волжского Автостроителя")
"Многие стремятся спасать мир. Но они гораздо больше сделали бы для спасения мира, если бы спасали самих себя."
Предлагаю очередную систему подсчёта репутации.
В современном мире оценки за посты суммируются независимо от того, кто и сколько поставил оценок. Это неправильно. Давайте введём одномерный массив, в котором представлено, от кого конкретно получены оценки. Тогда примерный массив будет выглядеть так:
{1, 1, 3, -2, 2, 1, 1, 13, 4, -18, -7}
Ищем среднее:
s = (1 + 1 + 3 - 2 + 2 + 1 + 1 + 13 + 4 - 18 - 7) / 11 = (2 + 3 + 2 + 17 - 25) / 11 = -1 / 11 = -.091
Ищем среднеквадратичное отклонение:
Q = sqrt (sum ((s - ai) ^ 2) / 11), где i = 1 ... 11.
Q = sqrt ((1.091^2 * 4 + 3.091^2 + 1.909^2 + 2.091^2 + 13.091^2 + 4.091^2 + 17.909^2 + 6.909^2) / 11) = sqrt ((1.190 * 4 + 9.554 + 3.644 + 4.372 + 171.374 + 16.736 + 320.732 + 47.734) / 11) = sqrt ((4.760 + 9.554 + 3.644 + 4.372 + 171.374 + 16.736 + 320.732 + 47.734) / 11) = sqrt ((14.314 + 8.016 + 188.110 + 368.466) / 11) = sqrt ((22.330 + 556.576) / 11) = sqrt (578.906 / 11) = 7.255
Вычисляем границы диапазона: [s - Q, s + Q] = [-7.346, 7.164]
Выкидываем значения массива, выходящие за границы диапазона:
{1, 1, 3, -2, 2, 1, 1, 4, -7}
Считаем сумму: 4 + 3 + 4 - 7 = 4. Это и есть конечная репутация.
Рассмотрим ещё пару примеров.
{1, 1, 3, -2, 2, 1, 1, 4, -18, -7}
s = (1 + 1 + 3 - 2 + 2 + 1 + 1 + 4 - 18 - 7) / 10 = (2 + 3 + 2 + 4 - 25) / 10 = -14 / 10 = -1.4
Q = sqrt ((2.4^2 * 4 + 4.4^2 + .6^2 + 3.4^2 + 5.4^2 + 16.6^2 + 5.6^2) / 10) = sqrt ((5.76 * 4 + 19.36 + .36 + 11.56 + 29.16 + 275.56 + 31.36) / 10) = sqrt ((23.04 + 19.72 + 40.72 + 306.92) / 10) = sqrt ((42.76 + 347.64) / 10) = sqrt (390.4 / 10) = 6.248
[s - Q, s + Q] = [-7.648, 4.848]
{1, 1, 3, -2, 2, 1, 1, 4, -7}
Сумма 4.
{1, 1, 1, 1, 1, -13}
s = -8 / 6 = -4 / 3 = -1.333
Q = sqrt ((2.333^2 * 5 + 11.667^2) / 6) =
= sqrt ((5.443 * 5 + 136.119) / 6) =
= sqrt (27.215 + 136.119) / 6) =
= sqrt (163.334 / 6) = 5.218
[s - Q, s + Q] = [-6.551, 3.885]
{1, 1, 1, 1, 1}
Сумма 5.
К чему это всё? Допустим, на форуме появился товарищ, который решил ставить мне минусы "за жизнь", только за участие в обсуждениях. На возраст наплевать. Типа, жизнь - <нехорошее слово>. Он не знал, что напал на бывшего выпускника научного физико-технического вуза.