在当前页面按 F12 打开 devtool,把下面的代码粘贴到 console 里回车执行
function calc(config) {
const SUCCESS_USE = 8;
const FAILED_USE = Math.max(0, SUCCESS_USE - config.reduceGrowthWhenFailed);
const EACH_SUCCESS_REDUCE_PROB = 0.1;
const run = ({ totalCount, successCount, isLastFailed }) => {
const curProb = Math.min(1, config.initProb + (totalCount === 0 ? config.fistTryAddProb : 0) - successCount * EACH_SUCCESS_REDUCE_PROB + (isLastFailed ? config.failedAddProb : 0));
if (successCount >= config.successNumber || totalCount >= config.maxTry || curProb <= 0) {
return successCount * SUCCESS_USE + (totalCount - successCount) * FAILED_USE;
}
return curProb * run({ totalCount: totalCount + 1, successCount: successCount + 1, isLastFailed: false }) + (curProb === 1 ? 0 : (1 - curProb) * run({ totalCount: totalCount + 1, successCount, isLastFailed: true }));
};
return run({ totalCount: 0, successCount: 0, isLastFailed: false });
}
然后执行以下函数计算
calc({
// 需要成功次数
successNumber: 2,
// 砍抬次数上限
maxTry: 7,
// 初始成功率(游戏内看的要去除生活技能首次增加的成功率)
initProb: 0.8,
// 生活技能:首次议价增加成功率
fistTryAddProb: 0,
// 生活技能:失败时下一次增加成功率
failedAddProb: 0.05,
// 生活技能:议价失败时增加的疲劳值减少
reduceGrowthWhenFailed: 1
})