今天下午去广州,坐绿皮火车。所以,早上就起来更一篇。
去看[A CLASSIC TOUR 学友.经典]世界巡回演唱会 广州站。
我还没有去看过演唱会。周杰伦2008年在重庆开的演唱会的时候都没去 =_=
那个时候想的是要中考-_-!
今天写的是划拳喝酒……。重庆的朋友大概应该知道,世界大战。
反正我喝不了几杯。三杯前还在世界大战,三杯后就应该世界和平,战后重建了。因为我实在喝不了-_-!
游戏规则大致是“先选酒,再选人”。
一桌人吃饭,一共(m+n)人,要通过游戏比赛,决定谁喝酒。
甲和乙站出来,分别代表A队和B队。
甲、乙划拳。(石头-剪刀-布或15-20-15或棒棒棒棒鸡等)都可以。赢的那个人决定,最后的输家要喝几杯酒,怎么喝?一人几杯 or 总共几杯 ……
选完酒以后,开始选人。
每赢一轮,赢家就在还没有指定队伍的人中,挑一个人过来。
直到所有人都分配完毕。这时A队和B队分别有m和n人。
下面开始火拼。
A队和B队任出一个人出来,通过划拳的方式角逐。
赢者守擂,不换人。但输者就死了,下场。同时,输掉的那一队,从活着的人中,再挑一个人出来,
和赢的这个人继续划拳比赛,直到某一方死完为止。
我们寝室有个杨老师,基本上在挑人的时候,自己这一边的人就会远远小于另一边的人。
所以经常最后输掉,以至于我们都怕杨老师喝酒阵亡了。
有一次,杨老师这边3个人,我们这边5个人,眼看着杨老师要翻盘,结果最后还是不幸阵亡。
于是,我就想问,如果按照上述游戏规则,A队m个人,B队n个人,A、B两队获胜的概率分别是多少。
假设每次划拳胜算都是5-5开。
%% 世界大战
% 内容:仿真划拳喝酒。验证概率。
% 作者:qcy
% 版本:v1.0
% 时间:2016年10月24日11:05:36
%% 思路
% 1. 初始化两个变量X和Y,为双方存活的人数。初始化输的局数n_lose_X=0,n_lose_Y=0。
% 2. 等概率生成 0-1
% 3. 如果是0,则X--;否则,Y--,直到X==0或Y==0,至4.。否则继续进行2。
% 4. 若 X==0,则n_lose_X++;若Y==0,则n_lose_Y++。
% 以上为1局的结果。可以多次重复1-4。
%% 检验是否几乎等概率生成0-1
% for k = 1:n_total
%
% rand_number = randi(2,1,1) - 1;
% if rand_number == 0
% n_total_0 = n_total_0 + 1;
% else
% n_total_1 = n_total_1 + 1;
% end
%
% end
%%
clear;
close all;
clc
%% [1挑2]
% N_total = 1e4;
% N_X_group = 1;
% N_Y_group = 3;
% X = N_X_group;
% Y = N_Y_group;
% n_lose_X = 0;
% n_lose_Y = 0;
% n_total_0 = 0;
% n_total_1 = 0;
%
% for k = 1:N_total % 仿真n_total局
% is_current_game_over = 0; % 游戏开始
% % 每局开始前,初始化双方人数
% X = N_X_group;
% Y = N_Y_group;
% while is_current_game_over == 0 % 一局中进行游戏
% rand_number = randi(2,1,1) - 1;
% if rand_number == 0
% n_total_0 = n_total_0 + 1;
% X = X - 1;
% else
% n_total_1 = n_total_1 + 1;
% Y = Y - 1;
% end
% if X == 0 % X输这局
% n_lose_X = n_lose_X + 1;
% is_current_game_over = 1;
% elseif Y == 0 % Y输这局
% n_lose_Y = n_lose_Y + 1;
% is_current_game_over = 1;
% else
%
% end
% end
%
% end
%
% % X输掉的概率
% prob_X_lose = n_lose_X / N_total
%% 造一张表出来
N_total = 1e4;
N_X_group = 10;
N_Y_group = 10;
P = size(N_X_group,N_Y_group);
for m = 1:N_X_group
for n = 1:N_Y_group
X = m;
Y = n;
n_lose_X = 0;
n_lose_Y = 0;
n_total_0 = 0;
n_total_1 = 0;
for k = 1:N_total % 仿真n_total局
is_current_game_over = 0; % 游戏开始
% 每局开始前,初始化双方人数
X = m;
Y = n;
while is_current_game_over == 0 % 一局中进行游戏
rand_number = randi(2,1,1) - 1;
if rand_number == 0
n_total_0 = n_total_0 + 1;
X = X - 1;
else
n_total_1 = n_total_1 + 1;
Y = Y - 1;
end
if X == 0 % X输这局
n_lose_X = n_lose_X + 1;
is_current_game_over = 1;
elseif Y == 0 % Y输这局
n_lose_Y = n_lose_Y + 1;
is_current_game_over = 1;
else
end
end
end
% X输掉的频率
prob_X_lose = n_lose_X / N_total;
P(m,n) = prob_X_lose;
end
end
%% 打印结果
P
%% 画图
figure(1);
x_axis = 1:N_X_group;
y_axis = 1:N_Y_group;
imagesc(x_axis,y_axis,P);
title('喝酒的频率');
xlabel('甲队人数');
ylabel('乙队人数');
colorbar
%
% surf(P);
计算机蛮干,仿个真模拟模拟。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
1 | 0.5008 | 0.7494 | 0.873 | 0.939 | 0.9687 | 0.9861 | 0.9933 | 0.9965 | 0.9979 | 0.9995 |
2 | 0.2478 | 0.5057 | 0.6723 | 0.8094 | 0.8924 | 0.9365 | 0.963 | 0.9792 | 0.9881 | 0.9936 |
3 | 0.1211 | 0.3138 | 0.5004 | 0.6592 | 0.7725 | 0.851 | 0.9088 | 0.9443 | 0.967 | 0.9782 |
4 | 0.064 | 0.1859 | 0.3449 | 0.5091 | 0.6424 | 0.7497 | 0.8259 | 0.8837 | 0.9293 | 0.9545 |
5 | 0.0329 | 0.1047 | 0.2204 | 0.3638 | 0.495 | 0.6282 | 0.7308 | 0.8072 | 0.8655 | 0.9091 |
6 | 0.0145 | 0.0607 | 0.1413 | 0.2525 | 0.3826 | 0.502 | 0.6149 | 0.7071 | 0.7846 | 0.8491 |
7 | 0.0089 | 0.0352 | 0.0879 | 0.1712 | 0.2706 | 0.385 | 0.4996 | 0.6067 | 0.6979 | 0.7706 |
8 | 0.0035 | 0.0193 | 0.0557 | 0.1133 | 0.1962 | 0.2812 | 0.4013 | 0.4995 | 0.6016 | 0.6955 |
9 | 0.0017 | 0.0098 | 0.0327 | 0.0741 | 0.1321 | 0.2132 | 0.307 | 0.4023 | 0.5067 | 0.5935 |
10 | 0.0013 | 0.0058 | 0.0186 | 0.0457 | 0.0906 | 0.1542 | 0.2263 | 0.3115 | 0.4041 | 0.504 |
看样子,杨老师当时3挑5没有翻盘,也是很正常了。因为……大概77%会输……
太惨了……………………
---------------------
更新于 20200909
和以下假设似乎不一样。
公平赌博,你有3块,我有5块,谁输了,谁给对方1块钱。这样你输光的概率是3/8。
而上文游戏的队员,一旦阵亡,就不能再比了。跟1块钱还可以重复使用,还是有区别。