基于Matlab的穿越火线-枪战王者(CF手游)王者飞行棋礼包收支分析
前言仿真假设部分仿真结果相关界面仿真程序运行结果后语本文章已有改进版,请戳链接【改进】基于Matlab的穿越火线-枪战王者(CF手游)王者飞行棋礼包收支分析观看。
前言
最近,枪战王者更新了一个新的礼包玩法——王者飞行棋,玩法看着非常诱惑,但实际玩一局需要多少钱呢?我根据相关玩法规则,写了一个Matlab仿真程序,通过这个程序,我们共同来探究一下,一共需要多少钻石,才能拿到喜欢的那把在终点的武器。
仿真假设
模型中的一些假设如下:
1、因为只有前20个骰子是125个钻石一个,而骰子打包10个一起买的价格是2380,所以模型中假设投一次骰子需要238个钻石。
2、因为不知道概率进终点的概率到底是多少,按照马哥尿性,假设此概率为0,即必须转够20圈才能进入终点。
3、因为不同的起点用的地图是一样的,只是顺序不一样,所以模型所假设的以蓝色为起点,与以它颜色作为起点是等效的,结果应该相差无几。
4、为了得到更普遍的情况,仿真时一共进行了1e7(即一千万)局。
部分仿真结果
我知道各位看这篇文章是为了什么,所以把仿真结果的钻石部分提前放在这里,详细结果请到文章末尾观看。
仿真结果以(平均值±标准差)的形式表示:
完成一局游戏(指到达终点)所需要的钻石为:17023.1237 ± 1596.9012个
根据3σ准则:
数值分布在(μ-σ,μ+σ)中的概率为0.6827
数值分布在(μ-2σ,μ+2σ)中的概率为0.9545
数值分布在(μ-3σ,μ+3σ)中的概率为0.9973
也就是说:所需要的钻石
分布在15426~18620的概率为68.27%;
分布在13829~7的概率为95.45%;
分布在12232~21814的概率为99.73%。
相关界面
王者飞行器游戏界面
骰子购买界面
仿真程序
~仿真时使用的软件是Matlab Ra~
小声吐槽一下,竟然没有Matlab的语法高亮,只能用java的凑合一下。
%{本项目用于分析枪战王者手游,王者飞行器游戏的相关收获与付出另外,因为官方并没有公开在四个特殊点处进入终点的概率,所以假设这个概率为0%}die = 1e7; %尝试的次数times_each = zeros(1,die); %每局丢骰子次数dia_eaca = zeros(1,die); %每局需要的钻石数dia_each = zeros(1,die); %每局当前的钻石数,如果负数则表示消耗的钻石数shishen_each = zeros(1,die);%每局获得M4A1——死神的次数baolei_each = zeros(1,die); %每局获得加特林——堡垒的次数jingtong_each = zeros(1,die);%每局获得的精通点bfzcbx_each = zeros(1,die); %每局获得冰封珍藏宝箱的个数mlj_each = zeros(1,die); %每局获得马来剑——毁灭的次数dszc_each = zeros(1,die); %每局获得大圣珍藏宝箱的个数hmzc_each = zeros(1,die); %每局获得毁灭珍藏宝箱的个数shayin_each = zeros(1,die); %每局获得沙鹰——修罗永久的次数dyhzc_each = zeros(1,die); %每局获得地狱火珍藏的个数scste_each = zeros(1,die); %每局获得双持斯泰尔——天使的次数parfor i = 1:diedia = 0; %当前的钻石数,如果负数则表示消耗的钻石数place = 1; %当前旗子的位置shishen = 0;%获得M4A1——死神的次数baolei = 0; %获得加特林——堡垒的次数jingtong = 0; %获得的精通点bfzcbx = 0; %获得冰封珍藏宝箱的个数mlj = 0; %获得马来剑——毁灭的次数dszc = 0; %获得大圣珍藏宝箱的个数hmzc = 0; %获得毁灭珍藏宝箱的个数shayin = 0; %获得沙鹰——修罗永久的次数dyhzc = 0; %获得地狱火珍藏的个数scste = 0; %获得双持斯泰尔——天使的次数%开始丢骰子round = 0; %当前的圈数times = 0;while 1times = times + 1;place = place + unidrnd(6);dia = dia - 238; %每投一次需要238个钻石if place >= 25 %如果大于等于25说明转了一圈place = place - 24;round = round + 1;endif round == 20%满20圈就必然进入终点break;endswitch placecase 1dia = dia + 280;case 2 shishen = shishen + 1;case 3dia = dia + 150;place = place + 6;case 4baolei = baolei + 1;case 5jingtong = jingtong + 1000;case 6dia = dia + 100;case 7dia = dia + 280;case 8bfzcbx = bfzcbx + 2;case 9dia = dia + 150;place = place + 6;case 10mlj = mlj + 1;case 11dszc = dszc + 2;case 12dia = dia + 100;case 13dia = dia + 280;case 14hmzc = hmzc + 1;case 15dia = dia + 150;place = place + 6;case 16shayin = shayin + 1;case 17dyhzc = dyhzc + 2;case 18dia = dia + 100;case 19dia = dia + 280;case 20hmzc = hmzc + 1;case 21dia = dia + 150;case 22scste = scste + 1;case 23dszc = dszc + 1;case 24dia = dia + 100;endendtimes_each(i) = times;dia_each(i) = dia;shishen_each(i) = shishen;baolei_each(i) = baolei;jingtong_each(i) = jingtong;bfzcbx_each(i) = bfzcbx;mlj_each(i) = mlj;dszc_each(i) = dszc;hmzc_each(i) = hmzc;shayin_each(i) = shayin;dyhzc_each(i) = dyhzc;scste_each(i) = scste;enddisp(['一共进行了' num2str(die) '局']);disp(['钻石_平均±标准差=' num2str(mean(dia_each)) ' ± ' num2str(std(dia_each))]);disp(['死神_平均±标准差=' num2str(mean(shishen_each)) ' ± ' num2str(std(shishen_each))]);disp(['堡垒_平均±标准差=' num2str(mean(baolei_each)) ' ± ' num2str(std(baolei_each))]);disp(['精通_平均±标准差=' num2str(mean(jingtong_each)) ' ± ' num2str(std(jingtong_each))]);disp(['冰封箱_平均±标准差=' num2str(mean(bfzcbx_each)) ' ± ' num2str(std(bfzcbx_each))]);disp(['马来剑_平均±标准差=' num2str(mean(mlj_each)) ' ± ' num2str(std(mlj_each))]);disp(['大圣箱_平均±标准差=' num2str(mean(dszc_each)) ' ± ' num2str(std(dszc_each))]);disp(['毁灭箱_平均±标准差=' num2str(mean(hmzc_each)) ' ± ' num2str(std(hmzc_each))]);disp(['沙鹰_平均±标准差=' num2str(mean(shayin_each)) ' ± ' num2str(std(shayin_each))]); disp(['地狱火箱_平均±标准差=' num2str(mean(dyhzc_each)) ' ± ' num2str(std(dyhzc_each))]); disp(['斯泰尔_平均±标准差=' num2str(mean(scste_each)) ' ± ' num2str(std(scste_each))]); disp('~~~~~~~~~~~~~~~~~~~~~华丽的分割线~~~~~~~~~~~~~~~~~~~~~');disp(['钻石_方差=' num2str(var(dia_each))]);disp(['死神_方差=' num2str(var(shishen_each))]);disp(['堡垒_方差=' num2str(var(baolei_each))]);disp(['精通_方差=' num2str(var(jingtong_each))]);disp(['冰封箱_方差=' num2str(var(bfzcbx_each))]);disp(['马来剑_方差=' num2str(var(mlj_each))]);disp(['大圣箱_方差=' num2str(var(dszc_each))]);disp(['毁灭箱_方差=' num2str(var(hmzc_each))]);disp(['沙鹰_方差=' num2str(var(shayin_each))]); disp(['地狱火箱_方差=' num2str(var(dyhzc_each))]); disp(['斯泰尔_方差=' num2str(var(scste_each))]); figure(1);title('每局需要消耗的钻石散点图');plot(dia_each,'.');figure(2);title('每局丢骰子次数散点图');plot(times_each,'.');
运行结果
以下为程序的详细运行结果,表示在玩一局完整的飞行棋后的收获。
结果同样使用(平均值±标准差)的形式表示。
钻石的负号表示需要消耗钻石。
一共进行了10000000局钻石_平均±标准差=-17023.1237 ± 1596.9012死神_平均±标准差=5.6936 ± 2.0133堡垒_平均±标准差=4.5207 ± 1.8745精通_平均±标准差=4457.2663 ± 1862.6936冰封箱_平均±标准差=7.7521 ± 3.5388马来剑_平均±标准差=4.5666 ± 1.8765大圣箱_平均±标准差=14.4385 ± 4.2696毁灭箱_平均±标准差=9.014 ± 2.7976沙鹰_平均±标准差=4.4402 ± 1.86地狱火箱_平均±标准差=8.8393 ± 3.7125斯泰尔_平均±标准差=5.1688 ± 1.9569~~~~~~~~~~~~~~~~~~~~~华丽的分割线~~~~~~~~~~~~~~~~~~~~~钻石_方差=2550093.496死神_方差=4.0535堡垒_方差=3.5138精通_方差=3469627.3779冰封箱_方差=12.5233马来剑_方差=3.5212大圣箱_方差=18.2297毁灭箱_方差=7.8267沙鹰_方差=3.4596地狱火箱_方差=13.7824斯泰尔_方差=3.8296
还有
每局需要消耗的钻石散点图
每局丢骰子次数散点图
后语
不知道各位觉得我的分析对不对,玩这个王者飞行棋值不值呢?欢迎在评论区留言。
如果觉得《基于Matlab的穿越火线-枪战王者(CF手游)王者飞行棋礼包收支分析》对你有帮助,请点赞、收藏,并留下你的观点哦!