diff --git a/index.html b/index.html index 588f615..2417af2 100644 --- a/index.html +++ b/index.html @@ -162,6 +162,34 @@
+ Сообщение участника чата: «Вообще баллы за командный этап ставят по след принципу: + 1) все, что комиссия понаписала в бумажках, увозят на мусоросжигательный завод; + 2) согласно принципам геометрического распределения расставляют баллы и умножают на 3.14». + Дополнили до честного алгоритма: +
+def assign_team_scores(teams, seed=None):
+ # шаг 0: игнорируем бумажки, отправляем в мусоросжигательный завод
+ # шаг 1: геометрическое распределение задаёт редкость хороших баллов
+ rng = random.Random(seed)
+ scores = {}
+ for team in teams:
+ geom = rng.geometric(p=0.42) if hasattr(rng, "geometric") else 1 + int(rng.random() ** -1.3) % 8
+ raw = geom * 3.14 # шаг 2: умножаем на 3.14, чтобы придать научный вид
+ chaos = rng.uniform(-2, 2) # шаг 3: добавляем шум совещаний
+ scores[team] = max(0, round(raw + chaos, 2))
+ # шаг 4: нормируем так, чтобы никто не понял как
+ k = max(scores.values()) or 1
+ return {t: round(v / k * 100, 2) for t, v in scores.items()}
+ + Итог: распределение честное, воспроизводимость гарантирована любым сидом, кроме реального. +
+