當前位置:
首頁 > 最新 > 亂彈,從跳一跳想到的排名策略

亂彈,從跳一跳想到的排名策略

最近跳一跳這個微信小遊戲刷了不少群和朋友圈。大家都在比誰的排名高,當然了,其實在淘寶上給個5塊錢就能刷個好分數,但這個排名也就最多保留一周,因為到了周一,數據就要清零了。

估計是對自己上一周的高分不舍,或者是又要給淘寶賣家送錢不爽,總有人對重新再來一次不太樂意。中午吃飯的時候跟人討論了一下,覺得這個排名如何才能顯示實際水平,是有文章可做的。現在的排名就是根據你當輪最高分來排的。假如我們換一種方式,就是算平均分呢?可是有些相當隨意的出手,可能就在第一跳就結束了,拿來算成績似乎也噪音太大了點。我們可以選取個人最好的10次成績,然後取平均,這樣就把噪音過濾掉,排名估計也能體現真實水平了。

當然了,這個只是排名,A比B高分還並不足以說明A比B強,要比較就還需要引入方差,計算置信區間,比如90%的置信度,然後比較A和B的均值在加上置信區間後是否有重疊,如果沒有重疊才可以認為A比B強;如果有部分重疊,還需要使用t檢驗來繼續確認。這些涉及統計學,但程序計算並不難。

也許不是每周清零,小程序的訪問量會衰減得快,為了讓大家保持熱度。我們可以考慮現在網球或斯諾克的排名方式,排名分數是計算一個滾動的時間段,比如一年,一年前的分數會清零不再作為計算排名的依據。這樣出來的排名還是有說服力的。

不過,話說回來,真這麼做,部分人就不會玩這個遊戲了,小遊戲就是因為有偶然性才吸引,排個名還要暴露自己的真實水平,還怎麼裝啊?

我們討論的另一個問題是如何簡單實現好友排名。如果伺服器上為沒個用戶保留一份排名清單,顯然是浪費空間的。一個辦法是系統只保留一個全體用戶的排名表,當用戶調取排名的時候,系統實時將全量排名表與客戶好友列表做交集。這個使用Redis內存資料庫來做集合運算是太簡單了,演算法複雜度估計為O(n),不過這數據訪問量可能有點大了。還有一個辦法是當好友數據有更新時(其實是有超越自身紀錄時),系統將相關數據推送到客戶端,這樣就能在本地解決排名問題。我們嘗試了一下在遊戲過程中離線,然後在遊戲結束時看排名的情況,確實是可以顯示的,說明數據都是有緩存的,嘿嘿,我知道你想說啥了,改本地數據可以偽造成績上傳。好吧,我相信這個小遊戲不是這麼簡單處理的。這些也就是中午閑聊吹水而已,大家還是散了吧,哈哈。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 九曜龍藏 的精彩文章:

TAG:九曜龍藏 |