有做播放器(不管移动端还是 PC 端)的同学么? 不知道是心理作用。从 Winamp , Foobar ,千千静听,到现在的酷狗、网易云、虾米,好像本地歌单随机播放时,各首歌被选中的概率不是平均的,有几首每次随机播放都会蹦出来。 我都养成了习惯,歌单随机播放几天后,就移除掉感觉播放概率特别大,已经听腻的那几首。
另外有个现象就是随机播放期间,选择返回上一首,再点选下一首,这个时候播放器的操作逻辑和文本编辑器的“ Redo ”逻辑一样的,并不会做随机动作。
1
hjc4869 2017-04-25 17:43:30 +08:00 1
我做 UWP 播放器。
大部分播放器的随机播放应该是 Shuffle 得到一个新的 list 。 具体代码如下 private static IEnumerable<T> Shuffle<T>(IEnumerable<T> source, Random rng) { var buffer = source.ToList(); for (int i = 0; i < buffer.Count; i++) { int j = rng.Next(i, buffer.Count); yield return buffer[j]; buffer[j] = buffer[i]; } } 一个元素出现在任意位置的概率应该是等同的。 |
2
acros OP |
3
monsoon 2017-04-25 19:06:52 +08:00 via Android
https://labs.spotify.com/2014/02/28/how-to-shuffle-songs/
iTunes 也是类似的, Google Music 也许也是类似的或者更复杂的算法(比如说结合机器学习)。 如果楼主你经常用的播放器有这种问题,有可能是随机的算法没写好。 |
4
wadjj 2017-04-25 19:14:42 +08:00 via iPhone 1
不是数学上的随机,因为不能回到上一首,并且有一首歌连放三遍被消费者骂智障的风险。
|
5
billlee 2017-04-25 21:17:04 +08:00
Foobar 有两种模式,一种是 random 真随机,另一种是 shuffle, 即先把列表打乱得到一个新列表,然后按这个新列表的顺序播放。
|
6
YvesX 2017-04-25 22:39:50 +08:00
有两种,随机和乱序。
有时把乱序叫做随机。 |
8
geelaw 2017-04-25 23:25:34 +08:00
|
10
coderluan 2017-04-26 10:22:55 +08:00
有两种吧
一种是最开始随机排序,之后的歌曲还是有顺序的,所以你可以退回上一首 一种是播放完再随机选择下一首,不过有的可能会播放过歌曲加到备选的随机队列 |
11
flyico 2017-04-26 11:18:33 +08:00
真随机的话下一首歌有可能正好是你刚才听的那首,同理,你点上一首往往也不是你刚才听的那首
另外一种叫乱序,只是事先打乱了顺序,然后再按顺序播放,绝对不会出现下一首是刚才听过的那首 |