顺序 21 点游戏
此示例玩的是二十一点 (也称为 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
测量历时
应将顺序仿真所用的时间与使用 分布式 21 点游戏 示例中的 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);