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

Этот пример проигрывает карточную игру блэк джека, также известного 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);