2011-10-06 49 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

相关问题