北太天元学习6-补充例子-美女的硬币的实验

%北太天元模拟美女的硬币的游戏
%一位陌生美女主动过来和你搭讪,并要求和你一起玩个游戏。
%美女提议:“让我们各自亮出硬币的一面,或正或反。
%如果我们都是正面,那么我给你3元,如果我们都是反面,我给你1元,
%剩下的情况你给我2元就可以了。”
% 绅士采用的策略是以概率p出硬币的正面,
% 美女采用的策略是以概率q出硬币的正面
% 美女绅士一共玩了N 轮
% 第i轮的收益会存储在mei(i)中
% 我们可以用 sum(mei)/N 计算收益的平均值
N = 10000;
%美女收益
mei = zeros(N,1);
% 绅士出正的概率 p
p = 0.5;
% 美女出正的概率 q
q = 3/8;
% 是否使用向量运算(区别于通过for循环对向量的每一个分量操作)
use_vec = false; % true 或者false
%%向量化操作,速度更快,但是需要仔细解释
if(use_vec)
sp = rand(N,1) < p;
mp = rand(N,1) < q;
mei = (-3)* sum( (sp.*mp)) ... % 两人同时出正面
+ 2 * sum( (1-sp) .* mp ) ... %绅士出反面,美女出反面
+ 2 * sum( sp .* (1-mp) ) ...
+ (-1) * sum( (1-sp) .* (1-mp) );
end
%% for 循环代码,虽然更慢,但是似乎更好懂。
if(~use_vec)
for i = 1:N
shen_zheng = rand < p;
mei_zheng = rand < q;
mei(i) = -3 * ( shen_zheng && mei_zheng) ...
-1 * ( ~shen_zheng && ~mei_zheng) ...
+2 * ( shen_zheng && ~mei_zheng) ...
+2 * ( ~shen_zheng && mei_zheng);
end
end
收益的平均值 = sum(mei)/N