2012-06-09 64 views
0

我正在計劃爲我的公告板引入一個投票系統,我正在尋找一個優秀而有效的算法來獎勵用戶。我所考慮的投票系統非常簡單。讓我解釋一下吧。投票系統的用戶獎/褒獎/信譽算法

  • 用戶發表的每篇文章只能由董事會上的其他用戶投票決定,用戶不能投票自己的帖子。
  • 增加投票成本1點,反對投票成本2點(只是爲了避免輕鬆抨擊和煽動)。
  • 每X天,在板的每個用戶接收點的量的花費在上下這是基於一個簡單的公式投票:

    A = 5 + AwardUserPerformance(); 
    Where AwardUserPerformance() is a function that returns a value between 0 and 10 depending on the performance of the user during the past X days. 
    

我可以使用以下變量裏面AwardUserPerformance(),以計算用戶的性能功能:

  1. T =時間在過去的X天
  2. p把用戶上網時間=數過去X天內用戶發佈的帖子
  3. V =在過去X天期間向用戶帖子發出的降薪和點讚的總和(例如,如果用戶收到3個upvotes和2個downvotes,則V = 1)

我只是不能找出一個好的算法來從這些變量中獲得0到10之間的數字。

回答

2

這不是一個小問題,我不認爲你能夠得到「完美的獨特答案」,因爲你想要的功能很大程度上取決於你想要獎勵的工作方式。

最明顯的方法是找到一種方法來標準化0(可怕)和1(完美)之間的每個指標。然後,您可以在每個度量上得到介於0和1之間的分數,將它們相乘並乘以10,得到一個定義在0和10之間的數字。時間將相當簡單(0 =沒有花費時間,1 =在線花費的全部時間),另外2人需要設置一些最小和最大閾值,截斷以上所有內容。例如:10個帖子和更多= 1,0個帖子= 0,中間是n個帖子/ 10個。

雖然有一些問題。首先,由於乘法效應,3中的任何一個上的0都會使得總分爲零。更一般地說,獲得大分數將會非常困難,因爲任何維度上的低分都會嚴重懲罰總分。然後,設置界限可以是任意的(您決定最小和最大),或者有點複雜(例如,您可以根據用戶觀察到的帖子數來確定最大值,並選擇90%的分值作爲最大界限) 。這是一個問題的原因是,邊界將取決於您的網站上的活動。如果你從100個用戶開始,獲得99個upvotes將非常困難。一旦你達到100萬用戶,這將變得更容易,獎勵系統應該(可能)調整。

除了使用普通線性函數之間的乘法,您可以使用任何遞增函數將您的每個度量映射到[0; 1]。具有遞減斜率的函數(如日誌)會給中等活躍用戶提供「簡單點」,但獲得高分將會更困難。這是我推薦使用Excel的其中一種情況,以便可視化一些有關各種功能的情況。

或者,爲了避免乘法問題,您可以使用可分離函數,並打破時間總分+分數+投票分數+投票分數。在這種情況下,您只需要每個函數都從0開始,並且它們的最大值必須總和爲10.

但是,我會爭辯說最好的系統只會使用收到的投票。這可能與其他2人相關(你不能在沒有發佈的情況下投票,你不能在沒有在線發佈)。