Форумы-->Творчество--> 1|2|3|4|5|6|7|8|9|10
| Автор | Мафия 367. Декстер. Полиция Майами (Регистрация) |
| Мне нельзя роль двойного агента, она требует вовлеченности, а я на форуме буду в основном только в вечернее время) | для LuckyButterfly:
Свин!!! ты как играть собрался?))
Задам 400+ вопросов, за себя и Лорда=).
А какое распределение укажешь при генерации? Это важно! | для СвиноПас:
о каком распределении речь?) | И прекратите генерить роли в квазислучайных рандомайзерах, они палевны.
Пиши ИИ - сгенери роли - вот список игроков, распределение Фишера-Йетса (Fisher–Yates shuffle). | | Суть алгоритма Фишера — Йейтса в том, что он перемешивает массив за один проход ($O(n)$) и дает строго равновероятное распределение ролей: каждая возможная комбинация имеет абсолютно одинаковые шансы.Как это работает на пальцахДопустим, у нас есть список из 10 ролей (Мафия, Дон, Шериф, Доктор, 6 Мирных) и 10 игроков.Берём полный список ролей: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].Встаём на последний элемент (индекс 9).Генерируем случайное целое число $k$ от 0 до 9.Меняем местами элемент на позиции 9 и элемент на позиции $k$.Переходим к предпоследнему элементу (индекс 8), генерируем случайное число от 0 до 8 и снова меняем их местами.Повторяем, пока не дойдём до первого элемента.Почему обычный sort(() => Math.random() - 0.5) — плохая идеяВ программировании часто пытаются перемешать массив через встроенную сортировку со случайной функцией сравнения. Это приводит к перекосу распределения: некоторые роли попадают к определенным номерам чаще, чем должны, потому что сортировки не рассчитаны на транзитивность случайных значений.Алгоритм Фишера — Йейтса гарантирует, что у каждого игрока ровно $1/N$ шанс получить любую из ролей. | для СвиноПас:
В этом распределении ГГ сносят первыми ходами, проверено опытным путем) | для Felicity:
=)) То у нас были лапки кривые=). Ну, или у них, что вероятнее ахха) | опять-таки, я генерирую просто последовательность чисел
выпадает скажем 1 5 17 18 и тп
а у меня перед глазами список ролей с 1-15, итого получаем:
что первая роль достается 1 игроку, 2 роль достается 5 игроку и так далее
то есть рандом просто генерит случайный порядок цифр (от 1-20, но 15 чисел, так как 15 ролей) | | предлагаю стартовать, а то сам себя съест Свин, не успев игре начаться)) | | тема закрыта by LuckyButterfly (2026-08-22 14:14:18) |
|---|
1|2|3|4|5|6|7|8|9|10К списку тем
|