"随机播放"是如何实现的?涉及什么原理?

有哪位大神可以解释一下播放器里面"随机播放"功能,歌曲的选择是依据什么原则?或者是什么原理?

因为,我发现播放器的随机播放,不管是p3还是p4还是网络播放器,播放时会更多地选择老歌,而新添加的新歌播放的频率就很少了,这是为什么?

推荐  (1) | 17人关注关注
16个答案
34 0

AndymikA社会研究参 法晓晓士

2012-03-09 15:55

一种随机播放系统及方法,对播放的媒体文件组成的播放列表进行处理,决定该媒体文件的播放状态。该系统包括:第一缓存器,记录该播放列表中包含的媒体文件数量;第二缓存器,由多个位组成,该各个位分别对应于该播放列表中的一媒体文件,标示该播放列表中各媒体文件的当前播放状态;选择模块,在执行播放任务时,根据该播放列表中随机选取一媒体文件;分析模块,依据该第二缓存器的存储数据分析该选择模块选取的媒体文件的播放状态;以及播放模块,用来在该分析模块的分析结果为该媒体文件未播放过时,播放该媒体文件;本发明的随机播放系统及方法可实现播放列表中各媒体文件在同一循环中,都能被播放,达到无重复随机播放的功效。
事实上计算机做不到真正的随机,它提供的随机只是基于某种特定算法的伪随机。现在广泛使用的是一种称作线性同余的算法,我向对于它的数学原理楼主你是不关心的,我来通俗的描述一下它的效果。 不可否认存在某一组数具有比较好的随机性(是伪随机),假设拿100亿个随机性数据比较好的数据放在一起,组成一个圆圈,那么我们需要使用随机数的时候,就"随便"找圈上的某个位置开始一直取数,就会得到一组伪随机数了。计算机中自然不会存储这么大的一个随机圈圈的,但是可以达到同样的效果。它的方法是这样的,是圈圈中的前一个数经过一定算法运算可以得到后面的数。先随便给定一个开始值(注意这里的“随便”),称为种子,那么用某算法对种子进行运算,得到一个结果,这个结果作为需要的随机数输出,同时将这个输出作为新的种子进行运算,得到生生不息的随机数。算法一般是确定的,也就是说,给定了一个确定的种子,那么以后的随机序列也就确定下来了------在计算机中,确实也是这样的。 前面讲到一个需要注意的“随便”,怎么去“随便”才能设置一个不确定的种子呢?怎么才能从一个大圈圈上“随便”找到一个入口呢?其实很简单,现在广泛使用的方法是使用系统的当前时间,这是一个时刻改变的值,程序运行时不能保证这个数的具体值,因此可以作为一个“随便”的入口------在计算机中,常用的随机算法都是这样的,使用时间做第一个种子。 “随机”后电脑到底对文件做了什么?怎么做的? 歌曲的随机在有了一个随机数算法以后也就简单了,至于随机有无重复这就是播放器设计者的事情了,设计是允许重复,那么就会可能有重复,不允许就没有,这是作者自定义的。播放器是一个程序,首先它有一个列表,被认为是有序的。现在楼主在考虑怎么用随机打乱它,我来说一下。 如果可以有重复,那么最简单了,每次要播放的时候产生一个随机数N,然后选择列表中的第N首歌曲播放就是了。播放完了再按相同的方法重新选择一首,无需考虑选择到已经播放过的歌曲,因为重复是被允许的。 如果不可以重复,那么可以产生一个不重复的随机序列一次播放。不重复的随机序列怎么产生?答案是一个一个产生,然后与前面产生过的做对比,出现过的直接抛弃。我还有一个更容易接受的算法,为每一个算法安排一个随机数标志,然后按照这个标志的大小对列表进行排序就可以了。这么做有一个小小的瑕疵,如果需要深入研究可以和我讨论。 播放器想要播放那个文件,那么它就可以播放那个文件。因此随机播放的时候不需要对文件做任何动作,只需要吧播放器的播放列表调整一下就可以了

转自:http://blog.sina.com.cn/s/blog_6828803d0100iol8.html

15 0

心理作用,假设你有90首歌,新加了10首,那么每次随机你有90%的情况听到老歌。

9 0

ErucySharePoint工程师

2012-03-09 15:35

计算机(或者类似的东西)生成的随机数都是伪随机,根据一个种子(一般是和当前时间有关)和一套算法计算出来的。
现在有些mp3其实不是随机数,而是随机序列(区别在于随机序列在所有内容播放完之前是不会重复的)。
至于经常有老歌,没有新歌,要么就是随机算法故意做成这样的(猜测你更喜欢听加入的时间久的歌),要么就是因为老歌你比较熟悉从而产生的错觉……(话说豆瓣电台就总给我放新歌,我就是要听老歌啊,摔)

3 0

一般都是一套算法实现的伪随机,而且各个硬件商或软件的实现方法又有不同,比如我的MP3每次的“随机播放”都是放同样顺序的曲目,残念……

2 0
支持者: 梁兵兵 神经丙


@Erucy 君解释的比较详细了。我说说为什么更多倾向于播放老歌吧

很简单。。。因为老歌数量多。。。。从数学上说,播放到老歌的概率更大。

1 0

千度建筑工程技术专业,软件爱好者

2012-04-06 17:17
支持者: 唯一的自己-

安卓的举例子

1 3 5 4 6
然后放到6了 返回去就是 453 再从3开始往后翻 就是3 5 4 6= =

1 0

东四高分子材料化学学士

2013-08-22 09:16
支持者: 迷糊的利亚酱

好像每次听歌都感觉总会播放一些歌曲而另一些就少播放。不知是不是心理作用。

1 0

咪姆中级知识分子

2013-08-22 14:18
支持者: _Mon

计算机没有真正的随机,自然界乃至宇宙何尝不是如此呢?唉,再讨论就太深了。

1 0

小碇半吊子的材料生

2013-08-22 16:55
支持者: 大伟和小伟

自己听的时候总感觉随机播放不随机,听得多了,每当一首歌快完结的时候,脑中就自然而然产生下一首歌的开场旋律来了,然后证明自己是正确的,电脑上播放器和手机上都这样,这其中其实还是有一定算法的吧,只是不同终端可能算法不同,放了新歌后算法又会重新计算,产生新的不随机“随机”顺序。

0 0

Hill_Hui嵌入式工程师

2012-04-06 17:02

一般都是伪随机算法.

0 0

有人专门研究过IPOD的随机播放规律。最后也没发现什么。

0 0

我的手机每次只要选的第一首歌一样,随机的下一首也一样……

0 0

我听歌曲,有一些歌曲重复的次数特别多,而有一些歌曲重来也没出现过~
当然每次听的时间也不常
手机上听歌,每次随机都是相同的曲目~

0 0

混合动力S自动化本科在读

2013-08-22 19:08

感觉iPod的随机播放没有什么规律可循。

1 5
支持者: 饭卡

原理:正态分布(又名“高斯分布”)。
其实是根据以下特征来实现的。
1.集中性:正态曲线的高峰位于正中央,即均数所在的位置。
2.对称性:正态曲线以均数为中心,左右对称,曲线两端永远不与横轴相交。
3.均匀变动性:正态曲线由均数所在处开始,分别向左右两侧逐渐均匀下降。
4.正态分布有两个参数,即均数μ和标准差σ,可记作N(μ,σ):均数μ决定正态曲线的中心位置;标准差σ决定正态曲线的陡峭或扁平程度。σ越小,曲线越陡峭;σ越大,曲线越扁平。
5.u变换:为了便于描述和应用,常将正态变量作数据转换。
简单地说:在播放列表越中间的文件,被随机到的几率越大,而最边缘两个文件的几率之和为中间个文件的几率(奇数时)

查看更多

添加回答

登录 后回答问题,你也可以用以下帐号直接登录

相关问答

关于我们 加入果壳 媒体报道 帮助中心 果壳活动 家长监控 免责声明 联系我们 移动版 移动应用

©果壳网    京ICP证100430号    京网文[2018] 6282-492号    新出发京零字东150005号     京公网安备11010502007133号

违法和不良信息举报邮箱:jubao@guokr.com    举报电话:18612934101    网上有害信息举报专区    儿童色情信息举报专区