少女前线:云图计划抽卡概率如何计算?本文通过排列组合与程序验证,科学分析四连抽中相同或不同人形的概率,破除误区,为玩家提供理性参考。
近日见到一些奇特言论,因从不随意反驳他人,故另开一帖表达看法。
某玩家声称:
毕业多年后,我凭直觉感到有些异常。尽管直觉未必可信,但为求准确,仍需通过科学方法加以验证。
由于统计时已将野良排除出池子,因此视作池中无人形为野良。当前池中共有8个人形,去掉野良后实际为7个。抽取四次金卡,每次结果均为这7个人形之一,概率为100%。这句话虽显而易见,却是后续推论的基础。
假设七种人形分别用字母A到G表示,每次抽取有7种可能,连续抽取四次共有7?=2401种组合方式。其中四次均为同一人形的情况仅有7种,即AAAA、BBBB、CCCC、DDDD、EEEE、FFFF、GGGG。因此,出现四次相同人形的概率为7除以2401,等于1/343,约等于0.29%。
假如我们运气极佳,想要连续抽出四个不同的人形,那么第一次有7种可能,第二次需与前次不同,剩下6种选择,依此类推。四次抽取各不相同的组合共有7×6×5×4=840种。而所有可能的抽取方式总共为2401种,因此抽出四个不同人形的概率约为840除以2401,大约为35%。
附上一张3选3示意图便于理解,因7选3有840种组合,难以全面展示。
三个中选三个的排列共有六种方式。
甚至能将其编写成程序代码。
public List> permute(List
List
List> res = new ArrayList<>();
backtrack(current, 0, res);
return res;
}
当前已选元素位于数组前部,候选元素紧随其后,两者共同构成完整集合的划分。
void backtrack(List> res) {
if (m == current.size()) {
res.add(new ArrayList<>(current));
}
从备选方案中挑选合适项
for (int i = m; i < current.size(); i++) {
// 选择数字 current
Collections.swap(current, m, i);
传入参数应为 m+1,而非 i+1,请注意区分。
backtrack(current, m+1, res);
// 撤销选择
Collections.swap(current, m, i);
}
}
提供一个无重复数字集合,生成其所有可能的全排列示例程序。
纯学术探讨,避免传播错误信息。
评论
更多评论