每张地图的生成步骤
- 定尺度。在 40 到 400 之间抽一个数 $S$,抽法是对数均匀:40 到 80、80 到 160、160 到 320 这几段机会一样多。所以有的地图产出普遍几十,有的普遍几百。
- 挑分布家族。从下面六种里等概率挑一种,再在各自的范围里抽形状参数。
- 生成 300 个块。每个块的产出 = $S$ × 从这个分布里抽一个数。
- 定换块费用。费用 = 本图产出中位数 × 一个比例,比例在 5% 到 60% 之间对数均匀抽。所以从费用推不出中位数。
- 加强版再加两样。每张图抽一个波动幅度 σ(0.2 到 0.6),每个块抽一个挖空概率(平均 8%,最高 35%)。每次挖到的量 = 真实水平 × 一个均值为 1 的随机倍数,挖空那轮得 0。
基础版每局开始时公布本图属于哪一种家族(面板上有一行"本图的产出分布",代码里读 state.dist),尺度、形状参数、换块费比例都不公布。
加强版什么都不公布。
下面六种家族按尾巴从轻到重排。每种先用人话说它怎么生成、地图长什么样、对玩家意味着什么, 再画一张真实生成的地图:左图是 300 个块产出的直方图,右图是把 300 个块从低到高排一排。点"换一张图"重新生成。 所有家族里的 S 都是那张图的尺度,40 到 400 之间随机,不公布。
六种家族的尾巴有多重
"最好的块比排在前 5% 的块高多少倍"是衡量尾巴轻重的一个直观指标。下面是每种家族 100 张地图的平均值,来自 data/node-farm-tail.js:
| 家族 | 均匀 | 正态 | 尾巴轻 Beta | 尾巴重 对数正态 | 两堆 | 尾巴极重 幂律 |
|---|---|---|---|---|---|---|
| 最好块 / 前 5% 块 | 1.1 倍 | 1.2 倍 | 1.5 倍 | 3.9 倍 | 3.2 倍 | 6.7 倍 |
| 最好块 / 中位数 | 2.0 倍 | 1.8 倍 | 3.6 倍 | 22 倍 | 8.5 倍 | 22 倍 |
尾巴越重,多探几块的价值越大,因为"更好的块"和"挺好的块"差得越远。均匀分布上探 20 块就够,幂律上探 60 块还在涨。
加强版:同一个块每次挖到的量
一个真实水平 100 的块,连续挖 40 次,挖空概率取 10%。上面一条是波动 σ = 0.2 的地图,下面一条是 σ = 0.6 的地图。空心点是挖空。
σ = 0.2(上下两成)
σ = 0.6(上下一倍)
σ = 0.6 时挖一次看到 200 或 50 都不奇怪。多挖几次的平均才靠近 100,但每多挖一次都花一轮。