我需要一种算法,就像Travian中使用的算法一样。我想知道如何制作它以便有4种资源类型,当有人进行搜查时,它们需要花费很多,但是它们从每种资源类型中取得相同的百分比,具体取决于raid可用的数量。所以我可以说我可以突袭450个资源,但是后卫有300个木头,400个粘土,200个铁和100个小麦,我会考虑木材构成总资源的百分比,然后我会将其乘以赏金。问题是当我回合时,我会得到449/450或451/450。
那么有没有办法解决舍入问题,有人可以编译整个算法吗?我只是非常好奇,就像我平时一样,并且出于好奇心编译大量的算法,比如Elo,Torus和其他非常基本的算法。
答案 0 :(得分:1)
您可以使用modulo计算余数,并随机分配余数。
答案 1 :(得分:1)
如果你希望它们都“均匀分布”,那么你偶尔会出现舍入问题。如果我的容量是100并且有三个相同的资源,你将永远无法通过四舍五入来实现它。
如果发生这种情况,只需选择一个来“修复”它。我通常会使用最后一个资源。像往常一样绕过除了最后一个之外的所有部分,然后从总数中减去它们(450或在你的例子中),这就是你的最后一个资源值。
答案 2 :(得分:0)
为什么你希望你的袭击者采取相应于突袭城镇资源的百分比? 据我说,袭击者应该根据他们的能力获得平衡的每种资源。
用你的例子:
Raiders capacity - 450
Wood - 300
Clay - 400
Iron - 200
Wheat - 100
While Not Empty (Wood and clay and Iron and Wheat) and Not Full ( Raiders )
Raiders pick up 1 each ressources
在此步骤之后,攻略有400
个资源(因为没有更多的小麦)。
town Stack
Wood - 200
Clay - 300
Iron - 100
Wheat - 0
对剩余资源执行相同操作:
50 / 3 = 16
此突袭者堆栈之后是这样的:
Wood - 116
Clay - 116
Iron - 116
Wheat - 100
TOTAL : 448
然后你有两个解决方案,在最大的堆栈中选择资源或者继续你的循环。 如果你选择以最大的资源获取资源:
当前股票:
Wood - 184
Clay - 284
Iron - 84
Wheat - 0
TOTAL : 552
选择2个Clay单位,然后你得到以下结果:
Town Stack
Wood - 184
Clay - 282
Iron - 84
Wheat - 0
TOTAL : 550
攻略堆叠
Wood - 116
Clay - 118
Iron - 116
Wheat - 100
TOTAL : 450
这只是另一种观点。你觉得这很有意思吗?