世界大战

今天下午去广州,坐绿皮火车。所以,早上就起来更一篇。

去看[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);

 

 

 

 

 

 

计算机蛮干,仿个真模拟模拟。

 

 

 12345678910
10.50080.74940.8730.9390.96870.98610.99330.99650.99790.9995
20.24780.50570.67230.80940.89240.93650.9630.97920.98810.9936
30.12110.31380.50040.65920.77250.8510.90880.94430.9670.9782
40.0640.18590.34490.50910.64240.74970.82590.88370.92930.9545
50.03290.10470.22040.36380.4950.62820.73080.80720.86550.9091
60.01450.06070.14130.25250.38260.5020.61490.70710.78460.8491
70.00890.03520.08790.17120.27060.3850.49960.60670.69790.7706
80.00350.01930.05570.11330.19620.28120.40130.49950.60160.6955
90.00170.00980.03270.07410.13210.21320.3070.40230.50670.5935
100.00130.00580.01860.04570.09060.15420.22630.31150.40410.504

 


 

 

看样子,杨老师当时3挑5没有翻盘,也是很正常了。因为……大概77%会输……

太惨了……………………

 

---------------------

更新于 20200909

和以下假设似乎不一样。

公平赌博,你有3块,我有5块,谁输了,谁给对方1块钱。这样你输光的概率是3/8。

而上文游戏的队员,一旦阵亡,就不能再比了。跟1块钱还可以重复使用,还是有区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qcyfred

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值