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