Spotify 如何對歌曲隨機播放?
01-28
簡評:果然商業產品中的隨機都是偽隨機...
Spotify 是全球最大的正版流媒體音樂服務平台,今天這篇文章介紹了他們是怎樣改善歌曲隨機播放效果的。
早前,有一些用戶反饋說 Spotify 的隨機播放並不隨機,因為有時會出現連續播放同一個音樂家音樂的情況。但事實上,Spotify 的隨機演算法確實是隨機的,只是和大多數人認為的隨機不一樣。
從創立開始,Spotify 就使用了 Fisher-Yates shuffle algorithm 來實現隨機播放列表。但是,我們要知道完全隨機意味著下面兩個情況都可能發生:
不同顏色代表不同的音樂家。
顯然下面的情況就和人們影響中的隨機不符了,這也就是賭徒謬誤。當然,做產品嘛,用戶永遠是對的,所以 Spotify 也就要想辦法改變改變洗牌演算法,從而更符合大多數人的感覺。
現在假設有 The White Stripes, The xx, Bonobo, Britney Spears 和 Jaga Jazzist 五個音樂家:
我們的目標是將他們的歌盡量均勻的分散到播放列表中。
一圖勝千言:
- 首先,The White Stripes(紅色)有四首歌, 意味著它們的間距平均應該是播放列表長度的 25%。因此,我們沿著一條線分散了這四首歌,間距從 20% 到 30% 隨機變化,這樣能看起來更隨機。
- 然後,對於每個音樂家第一首歌的位置引入隨機偏移量,免得第一首歌都從 0 開始。
- 對於同一音樂家的不同歌曲也做了同樣的處理,避免類似於同一專輯中歌曲太頻繁出現的情況。
演算法非常簡單,只需要幾行代碼就能實現,但效果相當的不錯。
原文:How to shuffle songs?
擴展閱讀:
- What does randomness look like? a blog post by Aatish Bhatia
- Clustering illusion on Wikipedia
- A very lucky wind, a radio episode about a couple of interesting random phenomenons
- Dither on Wikipedia
- How Randomness Rules Our World and Why We Cannot See It by Michael Shermer
極光日報擴展閱讀:
- 八大工具,篩選內容好幫手
- 從漏洞報告中學習
歡迎關註:知乎專欄「極光日報」,每天為 Makers 導讀三篇優質英文文章。
推薦閱讀:
※帶你入門Spark(資源整理)
※自己寫的編譯器一般幾個符號表比較合適?
※句柄是什麼?
※XAML與XML的關係與語法的區別,學習wpf應該怎麼學?學XML用什麼教材比較好?