简单的21点在MATLAB仿真

35视图(30天)
山姆
山姆 2020年11月19日
编辑: 詹姆斯Tursa 2020年11月19日
我想写一个代码来模拟21点的游戏。这个游戏只和球员之间的经销商,我假设玩家看不到的商人的卡片。两个甲板(104卡)在时间和游戏运行十二次。我最初的策略是“打”,如果玩家的手总额小于21岁,但我想这11次在不同的时间间隔卡,以便玩家继续打击如果他们手中的总价值小于20日,19日,18日等10个,为了确定最优策略假设经销商牌不能被看到。
这是我迄今为止。我很难弄清楚如何实现策略。提前谢谢你的帮助!
clc;明确 变量 ,近 所有 ;
甲板= [1,2,3,4,5,6,7,8,9,10、10、10、10]; 一副牌的百分比值
N = 12; %的手
n = 104; %的卡片在一套(两个甲板)
分数= 0; %初始化分数
x = 0; %初始化玩家手
y = 0; %初始化经销商手
打赌= 2; %的赌注放在总是2美元
j = 1: N
我= 1:n - 1
如果 x(我)> = 21
打破
其他的
pos =兰迪(长度(甲板));
卡=甲板(pos);
x1 =卡;
pos =兰迪(长度(甲板));
卡=甲板(pos);
x2 =卡;
x (i + 1) = x1 + x2;
pos =兰迪(长度(甲板));
卡=甲板(pos);
日元=卡;
pos =兰迪(长度(甲板));
卡=甲板(pos);
y2 =卡;
y (i + 1) = y1 + y2;
如果 x (i + 1) = = 21 & & y (i + 1) = = 21
分数(i + 1) =分数(我)
elseif x (i + 1) = = 21
分数(i + 1) =分数(i) + 1.5 *打赌;
其他的 y (i + 1) = = 21
分数(i + 1) =分数(i) - 1.5 *打赌;
结束
结束
结束
结果=分数;
结束
性能=意味着(结果)

答案(1)

詹姆斯Tursa
詹姆斯Tursa 2020年11月19日
编辑:詹姆斯Tursa 2020年11月19日
几件事…
看起来你应该这样:
甲板= repmat ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10、10、10、10], 1, 8);%值两个甲板的卡片
这:
pos =兰迪(长度(甲板));
卡=甲板(pos);
甲板(pos) = [];%删除卡刚从甲板上处理
也似乎需要改变:
我= 1:n - 1
成一个while循环
(真正的)
然后你可能想把整个代码在一个循环中蒙特卡罗几个运行。
你没有提到了经销商的策略。跑步会是什么?你需要一个单独的while循环的经销商的策略。

类别

找到更多的在纸牌游戏帮助中心文件交换

标签

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!