关于2-4和1-5攻击力的武器哪个更强的研究

2,757 阅读3分钟

起因

闲的无聊想到了这个问题,于是就发了一个沸点,网友们也展开了激烈的讨论,所以我决定好好研究研究这个问题。

juejin.cn/pin/7521160…

思考

关于输出问题,大部分网友都觉得,排除各类看脸问题,输出是一样的,经过我的大量计算......

作为程序员计算是不可能计算的

先算两把武器的输出

于是设计了以下代码

let aa = 0;
let bb = 0;
let cc = 0;

for (let i = 0; i < 10000; i++) {
  let a = 0;
  let b = 0;

  for (let i = 0; i < 10000; i++) {
    a += Math.floor(Math.random() * 3) + 2;
    b += Math.floor(Math.random() * 5) + 1;
  }

  a > b ? aa++ : a < b ? bb++ : cc++;
}

console.log(aa);  // 4997
console.log(bb);  // 4980
console.log(cc);  // 23

用两把武器对着同一个目标砍一万下,然后对比两把武器的总输出量,一共砍了一万回合,突出一个有来有回。看来大部分的网友的观点是正确,这两把武器的输出量相当

有一个其他想法

如果怪物的血量只有2,那么显然2-4的武器一刀一个,强的可怕。1-5的武器怎么可能可以媲美呢?

于是引入了怪物血量这个变量再次进行如下编码

const MONSTER_LIFE = 1;
const ATTACK_COUNT = 10000;
const PK_COUNT = 10000;

let winA = 0;
let winB = 0;
let tie = 0;

for (let i = 0; i < PK_COUNT; i++) {
  let aCount = 0;
  let bCount = 0;

  let lifeA = MONSTER_LIFE;
  let lifeB = MONSTER_LIFE;
  for (let i = 0; i < ATTACK_COUNT; i++) {
    lifeA -= Math.floor(Math.random() * 3) + 2;
    if (lifeA <= 0) {
      aCount++;
      lifeA = MONSTER_LIFE;
    }
    lifeB -= Math.floor(Math.random() * 5) + 1;
    if (lifeB <= 0) {
      bCount++;
      lifeB = MONSTER_LIFE;
    }
  }
  aCount > bCount ? winA++ : aCount < bCount ? winB++ : tie++;
}

console.log(winA);
console.log(winB);
console.log(tie);

以怪物血量为变量,各自砍一万刀,比拼砍杀怪物量,然后再PK一万回合,自然就知道哪把武器更强了

经过代码运行获得以下表格

怪物血量2-4 胜利1-5 胜利平局
00010000
10010000
21000000
31000000
41000000
5599950
61000000
71000000
8999910
99968275
101000000
11999541
129988102
1399652510
149968275
1599166024
20966924784
308824853323
4080341327639
5073861731883
100528124712248
1000210225255373
10000254124505009

通过上表可知,除了怪物为5滴血的时候1-5的武器胜率高的出奇,其他大部分血量都是2-4的武器比较厉害。但随着怪物血量的上升,两把武器又无限趋近于相同。

经过多次运行8、9滴血的时候2-4也不是碾压性胜利,但7、10滴血2-4的武器都是碾压性胜利的,有没有大佬解释一下。

结论

求稳选2-4就对了。

第一次写长篇,如果有计算错误望指正。