技术:出怪机制

版本差异

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
技术:出怪机制 [2022/12/20 03:20] – [选取某次出怪的行] OTZzzz技术:出怪机制 [2023/12/15 20:46] (当前版本) – [合法行] 39.76.68.180
行 5: 行 5:
  
 ~~SNIPPET_C~~snippet:通用排版~~ ~~SNIPPET_C~~snippet:通用排版~~
 +
 +
 +~~SNIPPET_O1715759832~~snippet:优秀条目~~
 +{{tag>[优秀条目]}}
 +<WRAP center round tip note>
 +经OP鉴定,本词条内容清晰,排版优美,是值得参考的优秀范例。
 +</WRAP>
 +~~SNIPPET_C~~snippet:优秀条目~~
 +
  
 ~~SNIPPET_O1715759832~~snippet:引自外部~~ ~~SNIPPET_O1715759832~~snippet:引自外部~~
行 29: 行 38:
 本条目主要讲解生存无尽模式中僵尸的生成算法与随机原理。 本条目主要讲解生存无尽模式中僵尸的生成算法与随机原理。
  
 +=====出生点=====
 +
 +出生点指僵尸生成时的x坐标。(([[https://crescb.com/timespace/ts/index.html|现代遗留问题清算——这个世界的时空。]]))
 +
 +^  僵尸  ^  普通波出生点  ^  旗帜波出生点  ^
 +|  旗帜  |  -  |  800  |
 +|  冰车  |  800~809  ||
 +|  投篮  |  825~834  ||
 +|  白眼、红眼  |  845~854  ||
 +|  撑杆  |  870~879  ||
 +|  雪橇  |  880~1030  ||
 +|  所有其他僵尸  |  780~819  |  820~859  |
 ===== 出怪类型 ===== ===== 出怪类型 =====
  
行 62: 行 83:
 [[[6a9ec0] +768] +561c]            // 出怪种子 [[[6a9ec0] +768] +561c]            // 出怪种子
 [[[[6a9ec0] +768] +160] +6c] * 65  // 完成选卡次数 * 101 [[[[6a9ec0] +768] +160] +6c] * 65  // 完成选卡次数 * 101
-[[6a9ec0] +7f8]                    // [[教程:名词大全#序号-2|游戏模式]]+[[6a9ec0] +7f8]                    // 游戏模式
 </code> </code>
  
 ===== 出怪概率 ===== ===== 出怪概率 =====
  
-以下表格列出了不同轮数下,各僵尸出现在出怪类型中的概率,以及出怪类型中僵尸总数((普僵与鸭子计一种,不计旗帜(固定生成)、雪人(极小概率随机生)))各取值的概率。(([[https://tieba.baidu.com/p/5714350581|无尽生存僵尸出现概率统计]]))+以下表格列出了不同轮数下,各僵尸出现在出怪类型中的概率,以及出怪类型中僵尸总数((普僵与鸭子计一种,不计旗帜(固定生成)、雪人(极小概率随机生)))各取值的概率。(([[https://tieba.baidu.com/p/5714350581|无尽生存僵尸出现概率统计]]))
  
 ''轮数=1'' ''轮数=1''
行 134: 行 155:
   * ''b*(a-b)*2/(a*(a-1))''   * ''b*(a-b)*2/(a*(a-1))''
   * ''(a-b)*(a-b-1)/(a*(a-1))''   * ''(a-b)*(a-b-1)/(a*(a-1))''
-六大场地的''a''值分别为18/17/20/20/16/16,''b''值在''轮数≥8''取值为9。+''轮数≥5''时,六大场地的''a''值分别为18/17/20/20/16/16''轮数≥8'',''b''为9。
 </callout> </callout>
  
行 168: 行 189:
 ^  序号 ^        简称 ^  级别 ^  权重 ^                           备注                            | ^  序号 ^        简称 ^  级别 ^  权重 ^                           备注                            |
 |    |     普僵    |    |  4000 |     ''轮数=5''起每轮-180,''轮数=25''起固定为400                                                        | |    |     普僵    |    |  4000 |     ''轮数=5''起每轮-180,''轮数=25''起固定为400                                                        |
-|    |     旗帜    |    |    |       旗帜波固定出现,不参与随机过程                                                     |+|    |     旗帜    |    |    |       无需出怪类型准许亦可生成,每个旗帜波有且仅有一只                                                     |
 |    |     路障    |    |  4000 |      ''轮数=5''起每轮-150,''轮数=25''起固定为1000                                                      | |    |     路障    |    |  4000 |      ''轮数=5''起每轮-150,''轮数=25''起固定为1000                                                      |
 |    |     撑杆    |    |  2000 |                                                            | |    |     撑杆    |    |  2000 |                                                            |
行 229: 行 250:
  
 从不同角度可以得到不同的饱和f数: 从不同角度可以得到不同的饱和f数:
-  * 第47f起,阶数不再起限制作用 +  * 第**47f**起,阶数不再起限制作用 
-  * 第85f起,级别上限在统计意义上不再起限制作用 +  * 第**85f**起,级别上限在统计意义上不再起限制作用 
-  * 第109f起,红眼数量上限不再起限制作用 +  * 第**109f**起,红眼数量上限不再起限制作用 
-  * 第126f起,级别上限在严格意义上不再起限制作用+  * 第**126f**起,级别上限在严格意义上不再起限制作用
  
  
行 305: 行 326:
  
 不难发现,在总权值为0的时候会在第6行出怪;如果前5行概率均为0的时候也会选择在第6行出怪;当所有行权重相等,且均未出过怪的时候,每行出怪概率相等,符合基本的要求。 不难发现,在总权值为0的时候会在第6行出怪;如果前5行概率均为0的时候也会选择在第6行出怪;当所有行权重相等,且均未出过怪的时候,每行出怪概率相等,符合基本的要求。
 +
 +==== 合法行 ====
 +
 +对于一种僵尸,如果僵尸出现在这行是符合游戏规则的,那么这行对于这种僵尸就是合法行。
 +
 +通常地,如果满足下列任意条件,那么该行不合法:
 +  - 行大于6或者小于1
 +  - 无草皮之地关卡外的裸地行
 +  - 非泳池浓雾关卡(包含无草皮之地)的第6行
 +  - 无草皮之地关卡的第1行与第5行
 +
 +特别地,对于一些僵尸,有额外的不合法判定方法:
 +  - 高地行((正式版废除了高地行,故无需考虑;高低行在游戏中行类型为3))类型对冰车僵尸与雪橇队僵尸不合法
 +  - 水路对普僵、旗帜、路障、铁桶、潜水、海豚、气球、植物僵尸以外的僵尸不合法
 +  - 水路(波数小于5)对海豚、潜水以外的僵尸不合法(谁笑到最后关卡的波数需加上10*轮数)
 +  - 非水路对于海豚僵尸与潜水僵尸不合法
 +  - 冰道消失倒计时为0的行(冰道长度为0,但是倒计时不为0不算,是合法的),雪橇小队僵尸不合法
 +  - 非无尽关卡的第1行对于白眼、红眼不合法
 +  - 非后院场合,上下有任意一行不满足如下条件的对舞王僵尸不合法
 +    - 为草地
 +    - 行不大于6且不小于1
 +
 +注:无草皮之地的裸地对舞王僵尸合法。
 +
 +==== 选取出怪行的流程 ====
 +
 +对于选择僵尸出怪的行,游戏将依次计算钉耙、行类型、保护传送门、隐形食脑者、最后一波、推车、权重,最后得出结果。
 +
 +对于选取好的僵尸,选取出怪行按以下操作:
 +  * 若场上有钉耙,获取编号((即栈位))最小的钉耙并执行以下流程,否则跳过钉耙
 +    * 钉耙所在行对于该僵尸类型是否合法,若不合法,则跳过钉耙
 +    * 若钉耙和僵尸绑定过(即使曾经与之绑定的僵尸消失),则跳过钉耙
 +    * 将钉耙标记为已绑定,插入钉耙行,返回钉耙行行直接结束出怪计算
 +
 +先依次计算每行的权重,对于第i行,流程如下:
 +
 +{{:技术:pasted:20221220-032900.png}}
 +
 +所有行计算完毕后,按抽取行原则选取行,然后插入行并返回结果行。
 +
 +==== 实验数据 ====
 +
 +{{:技术:pasted:20221220-032909.png}}
 +
 +==== 一些推论 ====
 +
 +推论1:僵尸没有可出行时出现在第六行
 +
 +{{:技术:pasted:20221220-032938.png}}
 +
 +推论2:在样本量足够大的情况下,平均概率仅与权重有关
 +
 +{{:技术:pasted:20221220-032945.png}}
 +
 +推论3:在样本量足够大的情况下,''LastPicked<fs x-small>i</fs>''和''SecondLastPicked<fs x-small>i</fs>''仅与行被选中的顺序有关
 +
 +推论2被验证后,推论3是显然的。
  • 最后更改: 17月前
  • OTZzzz 修改