【內含文件】網易云音樂的隨機播放到底是怎么做的?
上班開會,下班工作,仿佛已經成了產品經理常態(tài)。隨著你忙完當天的工作,時針也悄悄越過了11點,熟練的帶上耳機,打開最喜歡的歌單,點下隨機播放的按鈕,寄希望于算法能給你一天疲憊的工作帶來點未知的新鮮,緊接著叫車回家。
?
在等車的過程中,一直在思考 —— 隨機播放算法是如何給隨機的?

「隨機播放」是有魅力的,你永遠不知道下一曲是什么,有可能上一曲也“物是人非”。于是求證了下網易云播放器的產品經理,他說常見的「隨機播放」有兩種,一種是 Random 算法 ,一種是 Shuffle 算法。
?
Shuffle 一般叫【洗牌算法】,原理就類似撲克洗牌一樣,將不同數量的撲克隨意亂洗牌,然后排序。歌單隨機播放也是同理,每次播放時,會將這個歌單里的所有歌曲隨意洗牌,從而得到一個亂序的新歌單。Shuffle 其實也叫【偽隨機算法】。
?
而 Random 才是真正的隨機播放,他沒有列表的概念,也沒有上一曲和下一曲的概念,隨機播放和“抓鬮”一樣,是未知的。
?
那怎么判斷是【偽隨機】還是【真隨機】呢?其實只要點“上一曲”,判斷條件是:
如果切換的是你剛才聽過的那一首歌,那就是【偽隨機】的 Shuffle 算法;
如果每次切換的都是不同的歌,那就是【真隨機】的 Random 算法。
?
目前基本上市面上的音樂平臺都用的是 Shuffle 洗牌算法。為什么呢?從理論上來說,它更具備可控性,既能滿足用戶隨機音樂播放的需求,又能避免重復聽一首歌。
?
了解清楚隨機播放的兩個算法后,咱再往深一點思考下——更好的隨機算法是怎樣的?
?
其實我個人感覺網易云音樂的隨機算法有問題:感覺歌單中某些歌曲永遠隨機不到,有時候歌單中刪除的歌曲也被隨機到了。
?
后面據了解,網易云音樂并非只是對歌單進行簡單洗牌,而是會在洗牌算法中摻雜更多的用戶策略和數據策略。他們經過調研發(fā)現,用戶想要的其實不是真正的【隨機播放】,而是用戶不知道聽哪首歌,想要系統(tǒng)幫他做決定。并且更重要的是——符合他的品味和當前的心情。
?
而現實是——隨機算法能幫他解決隨意聽歌,但是不能解決符合他當時心情的歌曲,因為隨機算法并不知道用戶真正想要什么?但是網易云音樂有足夠大的個人聽歌數據,其實通過用戶策略和數據策略,能幫用戶找到符合他的品味的歌曲。
?
你會發(fā)現,推薦歌單中能找到你想聽的歌曲。比如:
?
產品經理在夜深人靜寫文檔畫原型時,點開隨機播放,你很大概率不會聽金屬、搖滾的音樂,而是結合你聽歌歷史,工作日時間點,更多給你隨機到輕音樂、保命曲。
?
你發(fā)現——每年聽歌年終報告,就詳細記錄了你夜里不睡覺循環(huán)了多少遍哪首歌,將你扒的一干二凈。回過來看,其實我覺得好的隨機算法應該具備以下四個重要特征:
首先是 Shuffle 洗牌算法策略更靈活一些,盡可能的隔開單一歌手、單一專輯,讓用戶從感覺上是一個隨機列表;
然后記錄用戶本地/最近的聽歌記錄,盡量在隨機時不被推薦出來,保證隨機新鮮感;
接著在本地記錄用戶操作行為,比如跳過某一類歌曲的次數,對用戶不感興趣的歌曲過濾或降權,對隨機列表精選;
最后豐富歌曲標簽庫,根據場景,推薦本地適合的歌曲優(yōu)先播放。
?
其中,有一點基礎性的工作必須要做——用戶畫像的完整性。除了看國內的產品,也可以挖掘下國外的 Spotify,該產品算是洗牌算法2.0版,雖說非常智能,依然有很多用戶對其嗤之以鼻,所以 Spotify 的產品經理開始思考為什么用戶會嗤之以鼻?
?
Spotify 的算法是 Fisher-Yates 洗牌算法。(在結尾我也為大家準備了洗牌算法的三種策略)我用一張簡單的圖展示下該洗牌算法:

你會發(fā)現,對于洗牌算法①的用戶最核心的想法是不希望一位歌手在短時間重復出現,這和“賭徒謬論”是一樣的,連續(xù)幾次都沒贏,都會認為下一把贏的概率會大很多,其實呢?每次的概率是相同且獨立的。
?
所以呢?用戶如果連續(xù)聽到某一歌手的歌曲時,用戶就會覺得算法有問題。對吧。
?
但是對于②來說,用戶就能更接受一些,因為似乎達到了真正的隨機,對不對?因為既滿足了歌曲的新鮮感,又避免了重復和單調。經過改進后,這個算法叫抖動算法。(是Shuffle 洗牌算法的升級版)
?
回過頭看,各家的隨機播放列表都是基于洗牌算法,也都在基礎上加了自己的“秘制調料”,吐槽或褒獎,都在用戶的言語間……但是呢?隨著獲取海量用戶的聽歌習慣,往往洗牌算法越來越人性化,越聽越懂你。
?
這就是算法的魅力……
?
John為你準備了 Shuffle 的三種算法,公眾號私信回復“洗牌”,即可獲取。非常有意思哈。
?
記得幫John文章分享,在看喲。感謝。
John的視頻號現在基本上每周一更,也是分享產品經理干貨。幾分鐘梳理清楚一個非常重要的知識點。可以去關注關注。
用一個視頻告訴你產品規(guī)劃的通用公式,前提是一定要清楚產品業(yè)務。
一個視頻聊清楚B端和C端產品的區(qū)別。
其他更多內容,可以去看視頻號主頁??梢猿兄Z讀友的是——每條視頻和每篇文章,必將經得起時間的檢驗。
