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