2013-02-08 63 views
-1

我需要一種算法,就像Travian中使用的算法一樣。我想知道如何做到這一點,以便有4種資源類型,並且當有人突襲時,他們會佔用很多資源,但是他們從每種資源類型中獲取相同的百分比,具體取決於raid的可用數量。所以我們可以說我可以突襲450個資源,但是防禦者有300個木材,400個粘土,200個鐵和100個小麥,我會拿木材的總量佔總資源的比例,然後我將它乘以獎金。問題是當我輪到時,我得到了449/450或451/450。賞金分配均衡

那麼有沒有什麼方法可以解決舍入問題,有人可以編譯整個算法嗎?我只是很好奇,就像我通常一樣,並且出於好奇,像Elo,Torus和其他非常基本的算法,編譯了大量的算法。

+1

你爲什麼不把它放下來?也許我不明白這個問題。 – Memming 2013-02-10 02:52:39

+0

那麼,問題是我想要它加起來一定數量。 – Justin 2013-02-15 03:50:03

回答

1

您可以使用modulo來計算餘數,並隨機分配餘數。

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資源(因爲沒有更多的小麥)。

鎮棧

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臺土,那麼你有如下結果:

鎮棧

Wood - 184 
Clay - 282 
Iron - 84 
Wheat - 0 
TOTAL : 550 

攻略棧

Wood - 116 
Clay - 118 
Iron - 116 
Wheat - 100 
TOTAL : 450 

這只是另一種觀點。你覺得有趣嗎?

1

如果你希望他們都「平均分配」,那麼你偶爾會遇到舍入問題。如果我的能力是100,並且有三個相同的資源,那麼只是四捨五入,你永遠無法做到。

如果發生,只需選擇一個「修復」它。我通常會使用最後一個資源。就像通常一樣,除了最後一個,除了最後一個,然後從總數中減去它們(450或在你的例子中),這就是你最後的資源價值。