Spotify如何使用抖動演算法隨機播放歌曲?
自 Spotify 服務推出以來,我們使用 Fisher-Yates shuffle 來生成播放列表的 完全隨機隨機 播放。
Fisher-Yates shuffle 是最漂亮的隨機演算法之一,令人驚訝的是,如此複雜的問題可以解決在某些程式語言中用 3 行程式碼解決。這是透過使用最佳操作次數和最佳隨機數來實現的。
收聽音樂的使用者並不喜歡完美的隨機性。
演算法
這似乎是一個以前必須由其他人解決的問題。事實上,我們發現了一篇部落格文章 The art of shuffling music by Martin Fiedler,它解決了同樣的問題。但是,他的演算法很複雜,在某些情況下可能會非常慢,因此我們對其進行了修改以更好地滿足我們的需求。
主要思想與抖動中使用的方法非常相似。假設我們有一張黑白圖片,使用了幾百個灰色陰影。
我們想透過僅使用黑色和白色兩種顏色的畫素來進一步簡化圖片。我們可以使用 隨機取樣:假設一個畫素有 80% 的灰色陰影,那麼它將有 80% 的機會變成黑色,20% 的機會變成白色。我們一個一個地處理畫素,並根據原始灰度為每個畫素隨機決定其新顏色。然而,結果遠不能令人滿意。
如您所見,黑色畫素形成簇,並且還有大白點。如果黑點和白點分佈得更均勻一些就更好了。Floyd–Steinberg 抖動等其他演算法 避免了聚類併產生了更好的結果。
在上一張圖片中看到的叢集幾乎完全消失了。
我們可以從抖動演算法中獲得靈感來解決同一藝術家的歌曲叢集問題;我們將嘗試將它們分佈在整個播放列表中。
詳細點選標題
使用者反饋:
1、我不得不說,他們為洗牌所做的事情真的很糟糕。我有一個很大的健身房播放列表,經常聽到相同的曲目,通常順序相同,現在需要向下滾動並在隨機曲目上按播放才能獲得“新”順序。
我理解他們所做的事情的動機,一個加權洗牌,只是在那個洗牌中使用我最聽/最受歡迎的是愚蠢的。
2、這是我對 Spotify 的不滿。我有一個播放列表,其中包含大約 800 首我喜歡的歌曲。它總是從大約 100 首最近新增的歌曲中播放。給我完全隨機的。
3、我相信 Spotify 積極建議使用者快取歌曲作為頻寬/成本節省措施。
我切換到 Apple Music 並用我最少播放的歌曲建立了一個智慧播放列表,我對它的多樣性感到非常滿意。
4、多年前我放棄 Spotify 的原因之一是他們的 shuffle 非常糟糕。
相關文章
- 漫話:給女朋友解釋為什麼隨機播放歌曲並不隨機隨機
- 隨機演算法隨機演算法
- Flutter抖動動畫、顫抖動畫、Flutter文字抖動效果Flutter動畫
- 【隨機演算法】洗牌隨機演算法
- 隨機化演算法隨機演算法
- 隨機演算法 概率演算法隨機演算法
- 隨機森林演算法隨機森林演算法
- javaScript隨機排序演算法JavaScript隨機排序演算法
- **PHP隨機數演算法PHP隨機演算法
- ArcGIS如何自動獲得隨機取樣點?隨機
- python taichi 加速 dither仿色抖動演算法PythonAI演算法
- 隨機森林演算法梳理隨機森林演算法
- 隨機迷宮生成演算法隨機演算法
- 使用js動態新增連結隨機連結JS隨機
- Java中如何使用隨機存取檔案RandomAcessFile類?Java隨機randomMac
- JavaScript抖動效果JavaScript
- 如何在 Linux 上使用 snap 安裝 Spotify(聲破天)Linux
- CUDA 的隨機數演算法 API隨機演算法API
- 隨機森林演算法原理剖析隨機森林演算法
- 使用Hive隨機抽樣Hive隨機
- Python如何隨機生成1到100的隨機數?Python隨機
- Input框防抖動
- JavaScript元素抖動效果JavaScript
- canvas小球碰壁隨機運動Canvas隨機
- js隨機運動小球效果JS隨機
- postgresql隨機啟動設定SQL隨機
- 如何使用excel 2007產生隨機數Excel隨機
- 隨機森林演算法深入淺出隨機森林演算法
- 機器學習演算法的隨機資料生成機器學習演算法隨機
- python中如何隨機分配Python隨機
- 【演算法】3 由招聘問題看隨機演算法演算法隨機
- 「演算法+人工」:Spotify是這樣征服你耳朵的演算法
- 使用Math類生成隨機數隨機
- python random隨機模組使用Pythonrandom隨機
- 使用mkpasswd生成隨機密碼隨機密碼
- Swift 中隨機數的使用Swift隨機
- Google、Twitter 和 Spotify 如何建立文件文化 - DEVGodev
- Java中使用指數退避和抖動實現重試Java