2010-12-03 177 views
0

我正在爲我們的應用程序中的新功能編寫spacifications。 現在我們想要做的是每當客戶端以特定貨幣發送一個trasfers消息時,我們需要在一個或多個銀行之間進行劃分。根據百分比劃分結果

80%至存儲體A和20%至銀行各自送到一個轉移消息時間B等。我們需要在我們的db(sql 2005)中構建這個,這樣如果百分比變化,我們才能夠改變它。 我很難編寫規範來計算何時將80%的郵件發送至銀行A,以及何時將20%的郵件發送至銀行b,這取決於我們在數據庫中所佔的百分比。我最初想到的是實施一個計數器來計算這些信息,然後根據百分比進行計算,但不清楚algorythm。你能幫我嗎?

回答

0

如果您不需要的結果來保證呢,你可以簡單地立足於一個隨機數生成路由:

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

以上顯然是硬編碼,並簡化了只是兩家銀行,但我想你可以看到如何對N個百分比的銀行進行推廣:按百分比排序並按升序測試數組。

如果您確實需要確切瞭解它(發四到銀行A始終第五至B銀行),那麼我認爲你將需要實現一個計數器。在我的腦海裏造成這種情況的最重要的問題是:

  • 如果你有奇怪的比率不很好地減少(比如51%和49%),是它確認發送51行A,然後49 B銀行,還是你想要替補發送直到最後?

一般來說,期待由greatest common divisor除以第一降低的比率,然後或者發送消息的正確數目給每個記憶庫順序,或沿相同的重複週期的所有的結果一起洗牌。

+0

我需要準確的,即50-50,80-20,20-30-50。我認爲需要一個櫃檯,問題是如何根據這些百分比分配「轉移消息」?我的意思是程序員現在會如何,現在如果我的櫃檯現在可以說12條消息,他會知道銀行A的70%的百分比滿足,因此係統將需要開始分配消息給BankB,直到滿足30% 。或者即使百分比是50-50,他現在是否會將先前的信息分配給銀行a,而下一個需要分配給銀行b? – andreas 2010-12-03 06:58:47