主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

顺序 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);