Как случайно перемешать и раздать карты в Excel с помощью динамических массивов
Динамические массивы в Excel открывают новые возможности для моделирования случайных процессов. В этой статье мы разберем, как создать, перемешать и раздать колоду из 52 карт, используя современные функции, такие как ПОСТОЛБЦ (TOCOL), СОРТПО / SORTBY, СЛУЧМАССИВ / RANDARRAY, СВЕРНСТОЛБЦ (WRAPCOLS) и СВЕРНСТРОК (WRAPROWS).
Если вы разбираете формулы в Excel с нуля или хотите ускорить расчеты, здесь показано, как использовать функции в экселе на понятных и рабочих примерах.
Этот метод идеально подходит для создания симуляторов карточных игр, проведения статистических экспериментов или просто для демонстрации мощности динамических массивов.
Создание и перемешивание колоды
Сначала создадим полный набор из 52 карт. Предположим, что значения карт (от двойки до туза) находятся в диапазоне A5:A17, а масти (пики, червы, бубны, трефы) — в B4:E4.
- В ячейке
B5введите формулу для создания прямоугольного массива всех карт:Эта формула объединит каждое значение с каждой мастью, создав массив 13x4.Русская версия:=A5:A17&B4:E4English version:=A5:A17&,B4:E4 - Чтобы преобразовать этот двумерный массив в один столбец, используйте функцию
ПОСТОЛБЦ (TOCOL)в ячейкеG5:СимволРусская версия:=ТНВНК(B5#)English version:=TOCOL(B5#)#указывает на весь динамический массив из предыдущего шага. - Для случайного перемешивания колоды примените
СОРТПО / SORTBYвместе сСЛУЧМАССИВ / RANDARRAY:Каждый пересчет листа (например, нажатиеРусская версия:=СОРТПО(G5#; СЛУЧМАССИВ(52))English version:=SORTBY(G5#, RANDARRAY(52))F9) генерирует новую случайную последовательность карт.
Совет:
Динамические массивы по-прежнему не копируют форматирование. Красный цвет для бубнов и червей на скриншоте достигается с помощью правил условного форматирования, примененных ко всему листу.
Раздача карт игрокам
После того как колода перемешана, карты можно раздать игрокам с помощью функций СВЕРНСТОЛБЦ (WRAPCOLS) (по столбцам) или СВЕРНСТРОК (WRAPROWS) (по строкам).
- Предположим, перемешанная колода находится в динамическом массиве
I5#. Чтобы раздать карты 6 игрокам, используйте:АргументРусская версия:=СВЕРНСТОЛБЦ(I5#; 6; "")English version:=WRAPCOLS(I5#, 6, "")""(пустая строка) вPad_Withпредотвращает ошибку#Ч / N/A, если количество карт не кратно числу игроков. В этом случае первые 4 игрока получат по 9 карт, а последние два — по 8. - Если в игре карты раздаются по одной (сначала всем по одной, потом по второй и т.д.), лучше подойдет
СВЕРНСТРОК (WRAPROWS). Чтобы раздать первые 8 карт в одну стопку:Русская версия:=ХРАОРНХС(ТАЙД(I5#; 8); 4)English version:=WRAPROWS(TAKE(I5#, 8), 4)
Продвинутые техники: все в одной формуле
Можно объединить все шаги — создание, перемешивание и раздачу — в одну мощную формулу.
=СВЕРНСТОЛБЦ(СОРТПО(ТНВНК(A5:A17&B4:E4); СЛУЧМАССИВ(52)); 6; "")=WRAPCOLS(SORTBY(TOCOL(A5:A17&,B4:E4), RANDARRAY(52)), 6, "")Чтобы гарантировать, что каждый игрок получит ровно по 5 карт (например, для покера), используйте функцию TAKE (TAKE):
=ТАЙД(СВЕРНСТОЛБЦ(I5#; 4); ; 5)=TAKE(WRAPCOLS(I5#, 4), , 5)Эта формула сначала раздает карты на 4 игрока, а затем берет только первые 5 столбцов (карт) для каждого.
Заключение
Использование динамических массивов для перемешивания и раздачи карт в Excel — это наглядный пример того, как современные функции упрощают сложные операции с данными. Комбинируя ПОСТОЛБЦ (TOCOL), СОРТПО / SORTBY, СЛУЧМАССИВ / RANDARRAY, СВЕРНСТОЛБЦ (WRAPCOLS)/СВЕРНСТРОК (WRAPROWS) и TAKE (TAKE), вы можете создавать гибкие и эффективные модели для игр, симуляций и анализа данных прямо в электронной таблице.