2011-10-06 98 views
2

我正在爲我的青少年俱樂部編寫一個計劃(http://dancingrobots.org/beurs/),根據在上一輪購買的次數計算飲料的價格(頗有趣的派對概念)。現在,我計算價格的方法是這樣的:證券交易所的計算

cola = cola * (vercola/pastVerCola); 

其中可樂的價格 vercola是已經買了這一輪次。 pastVerCola是上一次購買的時間。

飲料不能低於0.5歐元和10歐元以上。

我的兩個問題是:

  • 價格波動過大(這主要是由最大的機會到最小 和反轉)
  • 如果喝的是兩次0買的,它錯誤的(0/0)

對於那些在這裏intressted是全碼:http://pastebin.com/PsT2v2Tr

+3

而你的問題是......? – WTK

+1

這與你的問題沒有任何關係,但我可以建議你使用數組來處理所有的飲料嗎?如果您需要添加/刪除飲料,它會更加靈活,並且會爲您節省90%的代碼。 – njr101

+0

有趣的問題,價格的目標是什麼?即,購買它的人越多,它是否應該變得更便宜或更昂貴? – Robert

回答

4

如果你想降低您可以使用日波動e平方根:

cola = cola * Math.sqrt(vercola/pastVerCola); 

多次使用sqrt來減少它甚至更多。

另一種方法(我過去曾經使用的一種方法)是使用固定負載來抑制波動,例如,

cola = cola * (vercola + 50)/(pastVerCola + 50); 

這是有用的,因爲它也可以讓你在價格上每一輪自動增/減(使用40,50,60,等)

您可以結合這兩種效應來獲得您需要的波動。例如

var VER = 40;  // Constant 
var PASTVER = 60; // Constant 
cola = cola * Math.sqrt((vercola + VER)/(pastVerCola + PASTVER)); 

順便說一句,我認爲如果沒有人在一輪中購買特定的飲料,就會導致錯誤。 pastVerCola將被設置爲零,給你一個除零錯誤。使用常量可以完全避免這種情況。

+0

你先生或女士,保存了一個偉大的派對。 – TheEdonian

相關問題