回覆列表
-
1 # 每日有趣影片精選
-
2 # 傳播Internet價值
我認為不是。隨機播放功能沒必要搞加權平均這樣的演算法,播放列表在資料庫裡應該就是一個set集合,播放後給每首歌曲新增一個標記,再從播放列表裡取的時候判斷一下標記,取過的就不再取,重新取就可以了,當然,這個應該有非常成熟的技術實現,在效率和記憶體消耗上應該能做到極致!
我認為不是。隨機播放功能沒必要搞加權平均這樣的演算法,播放列表在資料庫裡應該就是一個set集合,播放後給每首歌曲新增一個標記,再從播放列表裡取的時候判斷一下標記,取過的就不再取,重新取就可以了,當然,這個應該有非常成熟的技術實現,在效率和記憶體消耗上應該能做到極致!
你所說的加權隨機演算法
一般應用在以下場景:有一個集合S,裡面比如有A,B,C,D這四項。這時我們想隨機從中抽取一項,但是抽取的機率不同,比如我們希望抽到A的機率是50%,抽到B和C的機率是20%,D的機率是10%。一般來說,我們可以給各項附一個權重,抽取的機率正比於這個權重。那麼上述集合就成了: {A:5,B:2,C:2,D:1}
如果是這樣那隨機播放都不是真隨機,因為你每一首歌的權重不同,權重高的自然被播放到的機率打,反之相反。這樣一來就會出現一首歌會被播放很多次,或一首歌從不被播放。
什麼是隨機系統可能按照自己的心情,在歌單中隨意抽取一首。
隨機播放怎樣實現細心的可能發現,一首歌單中,每一首歌都是會被播放的,因為隨機播放的機制可能是,原理上實現每一首歌被抽到播放的機率相同。就是播放一首歌,系統記錄這首歌已播放,在下一次隨機抽取中就不會再抽到這首歌。
所以播放器的隨機播放可能不是加權播放,這樣才不會導致一首歌被播放許多次,或一首歌從不被播放。希望理解。