Последовательный блэк джек

Этот пример проигрывает карточную игру блэк джека, также известного 21. Мы моделируем много проигрывателей, которые независимо проигрывают тысячи рук за один раз и статистики выплаты отображения. Симуляция проигрывания блэк джека является представительной для анализа Монте-Карло финансовых инструментов. Симуляция может быть сделана полностью параллельно, за исключением сбора данных в конце.

Для получения дополнительной информации о вычислениях, просмотрите код для pctdemo_setup_blackjack.

Связанные примеры:

Загрузите настройки в качестве примера и данные

Мы запускаем путем получения уровня трудности в качестве примера. Если вы хотите использовать различный уровень трудности в качестве примера, используйте paralleldemoconfig и затем запустите этот пример снова.

difficulty = pctdemo_helper_getDefaults();

Мы получаем число игроков и количество рук каждый проигрыватель игры от pctdemo_setup_blackjack. Параметр difficulty управляет числом игроков, которое мы моделируем. Можно просмотреть код для pctdemo_setup_blackjack для полного изложения.

[fig, numHands, numPlayers] = pctdemo_setup_blackjack(difficulty);

Запустите симуляцию

Мы используем pctdemo_task_blackjack, чтобы моделировать сингла, который проигрывает руки numHands, и мы вызываем эту функцию времена numPlayers, чтобы моделировать все проигрыватели. Поскольку отдельные вызовы функции являются независимым другого, мы можем легко использовать Parallel Computing Toolbox, чтобы выполнить эти симуляции. Можно просмотреть код для pctdemo_task_blackjack для полного изложения.

startTime = clock;
S = zeros(numHands, numPlayers); % Preallocate for the results.
for i = 1:numPlayers
    S(:, i) = pctdemo_task_blackjack(numHands, 1);
end

Измерьте прошедшее время

Время, используемое для последовательных симуляций, должно быть сравнено со временем, которое требуется, чтобы выполнить тот же набор вычислений с помощью Parallel Computing Toolbox в Распределенном примере Блэк джека. Прошедшее время меняется в зависимости от используемого оборудования.

elapsedTime = etime(clock, startTime);
fprintf('Elapsed time is %2.1f seconds\n', elapsedTime);
Elapsed time is 34.7 seconds

Постройте график результатов

Мы отображаем ожидаемую часть пари, которое выиграно или потеряно в каждой руке, наряду с доверительным интервалом. Мы также показываем эволюцию выигрыша и потери каждого из проигрывателей, которые мы моделируем. Можно просмотреть код для pctdemo_plot_blackjack для полного изложения.

pctdemo_plot_blackjack(fig, S);