根据百分比划分结果

时间:2010-12-03 06:30:06

标签: process

我正在为我们的应用程序中的新功能编写空间。 现在我们想要做的是,当客户以特定货币发送传递信息时,我们需要在一个或多个银行之间进行划分。

每次发送传输消息时,

银行A的80%和银行B等的20%。我们需要在我们的db(sql 2005)中构建它,以便如果百分比改变我们能够改变它。 我很难编写规范来计算何时将80%的消息发送到银行A,以及何时根据我们在数据库中的百分比将20%的消息发送到银行b。我最初想过实现一个计数器来计算消息,然后根据百分比进行计算,但不确定algorythm。你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果您不需要保证结果,您可以简单地将路由基于随机数生成器:

var r = rand() // assume it yields a decimal between 0.0 and 1.0
if (r < 0.2) sendToBankB()
else         sendToBankA()

上面显然只对两个银行进行了硬编码和简化,但我认为你可以看到如何将N个百分比推广到N个银行:按百分比排序并按顺序测试数组。

如果你确实需要准确一些(向银行A发送四个,向银行B发送第五个),那么我认为你需要实施一个计数器。我心中最重要的问题是:

  • 如果您的奇数比率没有很好地降低(例如51%和49%),是否可以将51发送到A银行然后将49发送到B银行,或者您是否要将备用发送发送到最后一个?

一般情况下,首先通过除以greatest common divisor来降低比率,然后按顺序向每个银行发送正确数量的消息,或者在相同的重复周期内将所有结果混合在一起。