天气系统可以根据当前状态决定下个状态的概率,而不是每个时段都从同一个固定比例抽取。这样得到的长期变化依赖转移规则,当前晴天也不代表下一时段仍必然晴天。
先确定规则与输入
状态按晴、云、雨排列,每行给出从该状态转到三个状态的概率,行和为一。初始状态确定,随后六步都使用同一张表;本文计算各时段状态分布,不把某一次抽样当成概率结果。
初始状态编号0,零晴、一云、二雨 三行转移概率[['3/10', '3/10', '2/5'], ['1/5', '1/10', '7/10'], ['7/10', '1/10', '1/5']]
逐项算出过程
时段1:三个目标状态分别从晴、云、雨收到的概率贡献[['3/10', '0', '0'], ['3/10', '0', '0'], ['2/5', '0', '0']];合计得到['3/10', '3/10', '2/5'],总和1。
时段2:三个目标状态分别从晴、云、雨收到的概率贡献[['9/100', '3/50', '7/25'], ['9/100', '3/100', '1/25'], ['3/25', '21/100', '2/25']];合计得到['43/100', '4/25', '41/100'],总和1。
时段3:三个目标状态分别从晴、云、雨收到的概率贡献[['129/1000', '4/125', '287/1000'], ['129/1000', '2/125', '41/1000'], ['43/250', '14/125', '41/500']];合计得到['56/125', '93/500', '183/500'],总和1。
时段4:三个目标状态分别从晴、云、雨收到的概率贡献[['84/625', '93/2500', '1281/5000'], ['84/625', '93/5000', '183/5000'], ['112/625', '651/5000', '183/2500']];合计得到['2139/5000', '237/1250', '1913/5000'],总和1。
时段5:三个目标状态分别从晴、云、雨收到的概率贡献[['6417/50000', '237/6250', '13391/50000'], ['6417/50000', '237/12500', '1913/50000'], ['2139/12500', '1659/12500', '1913/25000']];合计得到['2713/6250', '4639/25000', '9509/25000'],总和1。
时段6:三个目标状态分别从晴、云、雨收到的概率贡献[['8139/62500', '4639/125000', '66563/250000'], ['8139/62500', '4639/250000', '9509/250000'], ['2713/15625', '32473/250000', '9509/125000']];合计得到['108397/250000', '2919/15625', '94899/250000'],总和1。
每一步都同时使用上一时段的完整分布,不能刚算完晴天新概率就把它拿去计算同一时段的云天,否则实际改变了模型。
复核时看什么
对一个目标状态,把所有来源状态的当前概率乘相应转移概率再相加。三种新概率必须相加为一且全不为负;还可以枚举全部可能路径,把抵达同一状态的路径概率合并来复核。
练习时可以先遮住结果,沿用相同输入独立记录中间状态,再逐项比较。发现不同后先定位最早分歧,确认边界包含方式、编号起点、更新顺序以及是否提前取整。最后结果一致也不表示每个中间步骤都正确,因此保留过程记录有助于看清原因。
适用范围
这是一个完全自定的小模型,不是现实天气预测,也不代表具体游戏。它假设下一步只依赖当前状态;季节、位置或冷却限制若也有影响,就需要把这些信息纳入状态或规则。
