Что делает этот инструмент
Генератор случайных игральных карт вытягивает одну или несколько карт из виртуальной, только что перетасованной стандартной колоды. Вы сами решаете, сколько карт тянуть, какой будет колода и возвращается ли каждая вытянутая карта обратно (с возвратом) или откладывается в сторону (без возврата). Это удобно для карточных игр, школьных уроков по теории вероятностей, фокусов, принятия решений и любых ситуаций, где нужна честная и беспристрастная случайная карта.
Как пользоваться
Укажите, сколько карт нужно вытянуть, выберите режим и задайте, сколько карт показывать в одном ряду. В разделе «Настройки колоды» можно включать и отключать отдельные масти (трефы, бубны, червы, пики) и ранги (от двойки до туза), а также добавить 0, 1 или 2 джокера. Рабочая колода — это все пары «ранг + масть», у которых отмечены оба флажка, плюс джокеры, если они есть. По умолчанию используется полная колода из 52 карт.
Как работает формула
Колода — это список из \(N\) карт. Чтобы вытянуть одну карту, мы вычисляем равномерно распределённый случайный индекс
$$i = \lfloor \text{random()} \times N \rfloor$$где random() возвращает действительное число из диапазона [0, 1). В режиме «С возвратом» каждое вытягивание не зависит от предыдущих и идёт из полной колоды, поэтому одна и та же карта может выпасть несколько раз. В режиме «Без возврата» выполняется перетасовка Фишера–Йетса: для \(k\) от \(N-1\) до 1 мы выбираем
$$j = \lfloor \text{random()} \times (k+1) \rfloor,\quad D[k] \leftrightarrow D[j]$$и меняем местами позиции \(k\) и \(j\), после чего берём первые карты — это гарантирует отсутствие дубликатов.
Разбор примера
Возьмём колоду по умолчанию из 52 карт и вытянем 2 карты в режиме «С возвратом». Допустим, random() возвращает 0,0769, а затем 0,6442. Индекс первой карты
$$\lfloor 0{,}0769 \times 52 \rfloor = 3$$индекс второй карты
$$\lfloor 0{,}6442 \times 52 \rfloor = 33$$В результате получается упорядоченная пара карт, например «Пятёрка треф» и «Девятка пик», показанная по две карты в ряду.
Частые вопросы
В чём разница между режимами «С возвратом» и «Без возврата»? «С возвратом» — вытягивание с возвращением карты в колоду (возможны повторы); «Без возврата» — вытягивание без возвращения (все карты разные, как при раздаче руки).
Можно ли вытянуть больше карт, чем есть в колоде? Только в режиме «С возвратом». В режиме «Без возврата» количество ограничено размером колоды, ведь нельзя раздать больше уникальных карт, чем их существует.
Как обрабатываются джокеры? У джокера нет масти, и он просто называется «Джокер». При двух джокерах в режиме «Без возврата» они считаются двумя разными вытягиваниями, хотя и носят одно имя.