跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
帮助
RustedWarfare Wiki
搜索
搜索
创建账号
登录
个人工具
创建账号
登录
查看“概率与随机偏移”的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
链接
RustedWiki QQ群
←
概率与随机偏移
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
概率:我们通常使用spawnChance来表达产生几率,它大部分上一章[[随机数]]相似,不再说明, 这是它调用的方法。 <pre> 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; } } </pre> ej是id,eq是y,er是x,不过这些值很大可能没有初始化,而无法影响i4的值。 其中i4由单个spawnUnits生成次影响,这使多个spawnUnits生成结果相同。 它的生成范围是不均匀的,如果统计它的生成状况的话可能不会得到较好的效果。 为避免生成结果相同,打乱循序的开销最小,不过这需要你根据权重重新分配概率,且存在规律。 随机偏移:offRandomX/Y/XY也使用这个函数,它的生成范围是一个矩形。 在生成前添加一些无用的空项,影响i4的值也是一个解决办法,不过这可能引起性能问题。spawnUnits:dummyNonUnitWithTeam*2(spawnChance=0) 诺使用延迟来避免它,过小是不适合的,这只会加上游戏帧影响的一个乘数,使它们从左上到右下生成连起来就是一条斜线。 因此需要等待游戏更新种子后再生成,游戏更新种子的时间是不确定的,它可能在200~300区间,选择300延迟较稳定。 你可以使用spawnSource避免这糟糕的随机数生成器,不过这又涉及rnd生成相同的问题。
返回
概率与随机偏移
。
开关有限宽度模式