概率与随机偏移
概率: 我们通常使用spawnChance来表达产生几率,它大部分上一章*随机数相识,不再说明。 这是它调用的方法。 public static final int a(ah ahVar, int i, int i2, int i3) {
k t = k.t();
if (i < i2) {
int i4;
int i5 = t.bu + 1;
int i6 = (int) (((float) ((int) (((float) ((int) (((float) ((int) (((float) ((int) (((long) t.bG) + (1313 * ahVar.ej)))) + (ahVar.eq * 13.0f)))) + (ahVar.er * 13.0f)))) + (ahVar.eq * 130.0f)))) + (ahVar.er * 130.0f));
if (ahVar instanceof ce) {
i4 = ((ce) ahVar).bE;
i4 = (i4 * i5) + (i6 + (i4 * 13131));
} else {
i4 = i6;
}
i4 = ((((int) (((long) (i4 + ((i3 * 133) * i2))) + ((((long) i3) * ahVar.ej) + ((long) i3)))) + ((i5 * 1313) * i3)) + ((i5 * 13) + (i5 % 10))) % (i2 - i);
if (i4 < 0) {
i4 = -i4;
}
return i + i4;
} else if (i <= i2) {
return i;
} else {
k.b("min>max");
return i;
}
}
其中i4由单个spawnUnits第几项影响,这使多个spawnUnits生成结果相同。 它的生成范围是不均匀的,如果统计它的生成状况的话可能不会得到较好的效果。(生成从第一个开始) 随机偏移: 由于多个spawnUnits生成结果相同,为此必须使用一些延迟来避免它,过小是不适合的,这只会加上游戏帧影响的一个乘数,使它们从左上到右下生成连起开就是一条斜线。 因此我们需要等待游戏更新种子后再生成, 游戏更新种子的时间是不确定的,它可能在200~300区间,选择300延迟较稳定。