本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本发明实施例中,随机播放方法及装置可以广泛应用于各类媒体播放器,如音乐播放器、视频播放器或图片播放器等,相应地,播放列表中的项目可以包括歌曲、视频或图片等媒体文件。需要说明的是,在实际应用过程中,随机播放方法及装置还可以应用于其他类似的媒体文件播放装置,具体此处不作限定。
请参阅图1,本发明实施例中随机播放方法一个实施例包括:
101、对原始播放列表中的项目进行分组;
在本实施例中,原始播放列表中包含多个按一定位置顺序排列的项目,随机播放装置可以根据多种方式对原始播放列表中的项目进行分组,得到包含按一定位置顺利排序的多个小组,例如,按照位置顺序依次将若干个连续的项目分配为一组,直至所有项目分配完毕,其中,每个小组所包含项目的总数可以一致,也可以不同;也可以是按照位置顺序每次向各个小组分配一个项目,直至所有项目分配完毕。需要说明的是,在其他一些实施例中,对原始播放列表中的项目进行分组还可以采用其他更多的方式,具体此处不做限定。
102、针对每个小组,随机生成数值序列;
在本实施例中,以小组所包含项目的总数为长度,进行数值序列随机生成。其中,数值序列的长度指数值序列中元素的总数,在数值序列中元素的总数与小组所包含项目的总数一致的情况下,可以保证该数值序列中的每个元素都能唯一对应一个该小组中的项目,例如,以位置序号为参考,可以将位置序号一致的元素和项目对应起来,数值序列中的第一个元素对小组中的第一个项目,数值序列中的第二个元素对小组中的第二个项目,依次类推,以形成元素与项目之间的对应关系。需要说明的是,在其他一些实施例中,在数值序列中元素的总数与小组所包含项目的总数一致的情况下,也可以形成其他的对应关系,例如,数值序列中的第一个元素对应小组中的最后一个项目,或者依据一些函数关系来形成这种对应关系等,具体此处不作限定。
103、根据数值序列中元素的大小顺序依次取出与该元素对应的该小组中的项目,得到小组列表;
在本实施例中,数值序列中的元素存在大小差异,可以对元素的大小顺序进行排序,例如,从大到小或者从小到大等。需要说明的是,在实际应用过程中,可以允许存在两个相同大小的元素,此时,可以采用一些通用排序机制对相同大小的元素进行排序,只需保证最后能决定它们的排序即可。
在对元素的大小顺序进行排序后,随机播放装置根据数值序列中元素的大小顺序依次取出与该元素对应的该小组中的项目,得到小组列表。在本实施例中,由于元素与项目之间一一对应,得到的小组列表可以保证生成的小组列表中保留有小组中的各项目,且每个项目仅出现一次;而且,由于数值列表随机生成,可以保证每次得到的小组列表均不同。
104、对各小组得到的小组列表进行汇总,得到随机播放列表;
在本实施例中,在各小组得到的小组列表后,随机播放装置对各小组得到的小组列表进行汇总,得到随机播放列表。其中,对小组列表进行汇总的方式不作限定,可根据需要按照预定顺序规则对各小组列表进行叠加。可以理解的是,在得到的小组列表可以保证生成的小组列表中保留有小组中的各项目,且每个项目仅出现一次的情况下,经汇总后的随机播放列表也可以保证保留有原始播放列表中的所有项目,且每个项目仅出现一次。
本发明实施例提供的技术方案中,首先对原始播放列表中的项目进行分组,得到多个小组;然后针对每个小组,以该小组所包含项目的总数为长度随机生成数值序列,以使得该数值序列中的每个元素都能唯一对应一个该小组中的项目;再根据数值序列中元素的大小顺序依次取出与该元素对应的该小组中的项目,得到小组列表;最后,对各小组得到的小组列表进行汇总,得到随机播放列表。本发明实施例在数值序列中的每个元素都能唯一对应一个小组中的项目的前提下,通过对数值序列中元素的大小顺序进行排序,来依次确定小组中各项目的顺序,可以保证生成的小组列表中保留有小组中的各项目,且每个项目仅出现一次,由于数值列表随机生成,可以保证每次得到的小组列表均不同。因此相对于现有技术,本发明实施例中的随机策略可避免已经播放过的项目在短时间内被再次随机选中重复播放,但有些项目却从未被播放过的问题,以确保在同一个循环内每个项目仅出现一次,同时,本发明实施例计算复杂度低,可缩短随机播放列表的生成时间。
在图1所示实施例的基础上,下面对随机播放方法进一步假设新一层随机,具体请参阅图2,本发明实施例中随机播放方法另一实施例包括:
201、对原始播放列表中的项目进行分组;
202、针对每个小组,随机生成数值序列;
在本实施例中,步骤201至步骤202的过程与图1所示实施例中的步骤101至步骤102的过程相同,在此不再赘述。
203、根据预设规则对该数值序列进行运算;
在本实施例中,对该数值序列进行运算可以包括:将该数值序列与目标序列进行按位运算,其中,该目标序列由项目在该小组中的位置序号组成。在本实施例中,针对每个小组,将项目在小组中的位置序号进行排列,以设置为目标序列,具体为1、2、3、、、n,其中n为该小组所包含项目的总数。需要说明的是,目标序列也可以选取其他的常用数值序列,只需满足目标序列的长度与该小组所包含项目的总数一致即可。
在本实施例中,按位运算可以包括按位相加运算、按位异或、按位与或者按位与非等运算方式,在实际应该过程中,还可以选用更多其他的运算方式,具体此处不作限定。可选地,在本实施例中,为方便数值序列进行按位运算,可以将每个小组的总数以及随机生成的数值序列中的元素的值限制在255内。
需要说明的是,对该数值序列进行运算的目的是为了假设新一层随机,具体此处对运算方式不作限定。
204、根据运算后的数值序列中元素的大小顺序依次取出与该元素对应的该小组中的项目,得到小组列表。
在本实施例中,对假设新一层随机后,随机播放装置根据运算后的数值序列中元素的大小顺序依次取出与该元素对应的该小组中的项目,得到小组列表。在本实施例中,运算后的数值序列中的元素存在大小差异,可以对元素的大小顺序进行排序,例如,从大到小或者从小到大等。需要说明的是,在实际应用过程中,可以允许存在两个相同大小的元素,此时,可以采用一些通用排序机制对相同大小的元素进行排序,只需保证最后能决定它们的排序即可。
在对元素的大小顺序进行排序后,随机播放装置根据数值序列中元素的大小顺序依次取出与该元素对应的该小组中的项目,得到小组列表。在本实施例中,由于元素与项目之间一一对应,得到的小组列表可以保证生成的小组列表中保留有小组中的各项目,且每个项目仅出现一次;而且,由于数值列表随机生成,可以保证每次得到的小组列表均不同。
例如,经分组得到某一按一定位置顺利排序的小组X,具体为(X1、X2、X3、X4、X5、X6),随机生成的数值序列为P,具体为(P1、P2、P3、P4、P5、P6),在将位置序号一致的元素和项目对应起来的情况下,X1对应P1,X2对应P2,X3对应P3,X4对应P4,X5对应P5,X6对应P6。
假设运算后的数值序列中,按大小顺利排序依次为P4、P3、P5、P2、P6、P1,则依次取出X4、X3、X5、X2、X6、X1,即得到的小组列表具体为(X4、X3、X5、X2、X6、X1)
205、对各小组得到的小组列表进行汇总,得到随机播放列表;
在本实施例中,在各小组得到的小组列表后,随机播放装置对各小组得到的小组列表进行汇总,得到随机播放列表。其中,对小组列表进行汇总的方式不作限定,可根据需要按照预定顺序规则对各小组列表进行叠加。可以理解的是,在得到的小组列表可以保证生成的小组列表中保留有小组中的各项目,且每个项目仅出现一次的情况下,经汇总后的随机播放列表也可以保证保留有原始播放列表中的所有项目,且每个项目仅出现一次。
本发明实施例提供的技术方案中,首先对原始播放列表中的项目进行分组,得到多个小组;然后针对每个小组,以该小组所包含项目的总数为长度随机生成数值序列,以使得该数值序列中的每个元素都能唯一对应一个该小组中的项目;在对该数值序列进行运算以假设新一层随机后再根据数值序列中元素的大小顺序依次取出与该元素对应的该小组中的项目,得到小组列表;最后,对各小组得到的小组列表进行汇总,得到随机播放列表。本发明实施例在数值序列中的每个元素都能唯一对应一个小组中的项目的前提下,通过对数值序列中元素的大小顺序进行排序,来依次确定小组中各项目的顺序,可以保证生成的小组列表中保留有小组中的各项目,且每个项目仅出现一次,由于数值列表随机生成,可以保证每次得到的小组列表均不同。因此相对于现有技术,本发明实施例中的随机策略可避免已经播放过的项目在短时间内被再次随机选中重复播放,但有些项目却从未被播放过的问题,以确保在同一个循环内每个项目仅出现一次,同时,本发明实施例计算复杂度低,可缩短随机播放列表的生成时间。
上面对本发明实施例中的随机播放方法进行了描述,下面对本发明实施例中的随机播放装置进行描述,请参阅图3,本发明实施例中随机播放装置一个实施例包括:
分组单元301,用于对原始播放列表中的项目进行分组;
生成单元302,用于针对每个小组,随机生成数值序列,其中,所述数值序列的长度为所述小组所包含项目的总数,以使得所述数值序列中的每个元素都能唯一对应一个所述小组中的项目;
选取单元303,用于根据所述数值序列中元素的大小顺序依次取出与所述元素对应的所述小组中的项目,得到小组列表;
汇总单元304,用于对各小组得到的小组列表进行汇总,得到随机播放列表。
为便于理解,下面以一具体应用场景为例,对本实施例中随机播放装置内部运作流程进行描述:
分组单元301对原始播放列表中的项目进行分组;生成单元302针对每个小组,随机生成数值序列,其中,所述数值序列的长度为所述小组所包含项目的总数,以使得所述数值序列中的每个元素都能唯一对应一个所述小组中的项目;选取单元303根据所述数值序列中元素的大小顺序依次取出与所述元素对应的所述小组中的项目,得到小组列表;汇总单元304对各小组得到的小组列表进行汇总,得到随机播放列表。
本发明实施例提供的技术方案中,首先通过分组单元301对原始播放列表中的项目进行分组,得到多个小组;然后由生成单元302针对每个小组,以该小组所包含项目的总数为长度随机生成数值序列,以使得该数值序列中的每个元素都能唯一对应一个该小组中的项目;再由选取单元303根据数值序列中元素的大小顺序依次取出与该元素对应的该小组中的项目,得到小组列表;最后,通过汇总单元304对各小组得到的小组列表进行汇总,得到随机播放列表。本发明实施例在数值序列中的每个元素都能唯一对应一个小组中的项目的前提下,通过对数值序列中元素的大小顺序进行排序,来依次确定小组中各项目的顺序,可以保证生成的小组列表中保留有小组中的各项目,且每个项目仅出现一次,由于数值列表随机生成,可以保证每次得到的小组列表均不同。因此相对于现有技术,本发明实施例中的随机策略可避免已经播放过的项目在短时间内被再次随机选中重复播放,但有些项目却从未被播放过的问题,以确保在同一个循环内每个项目仅出现一次,同时,本发明实施例计算复杂度低,可缩短随机播放列表的生成时间。
在图3所示实施例的基础上,下面对假设新一层随机的随机播放装置的具体结构进行描述,具体请参阅图4,本发明实施例中随机播放装置另一实施例包括:
分组单元401,用于对原始播放列表中的项目进行分组;
生成单元402,用于针对每个小组,随机生成数值序列,其中,所述数值序列的长度为所述小组所包含项目的总数,以使得所述数值序列中的每个元素都能唯一对应一个所述小组中的项目;
选取单元403,用于根据所述数值序列中元素的大小顺序依次取出与所述元素对应的所述小组中的项目,得到小组列表;
汇总单元404,用于对各小组得到的小组列表进行汇总,得到随机播放列表。
在本实施例中,所述随机播放装置还包括:
运算单元405,用于在所述根据所述数值序列中元素的大小顺序依次取出与所述元素对应的所述小组中的项目,得到小组列表之前,根据预设规则对所述数值序列进行运算;
所述选取单元403,具体用于根据运算后的数值序列中元素的大小顺序依次取出与所述元素对应的所述小组中的项目,得到小组列表。
可选地,在本实施例中,所述运算单元405,具体用于将所述数值序列与目标序列进行按位运算,其中,所述目标序列由所述项目在所述小组中的位置序号组成。
可选地,在本实施例中,所述按位运算包括按位相加运算、按位异或、按位与或者按位与非。
可选地,在本实施例中,所述数值序列中每个元素对应一个所述小组中的项目是指具有同一位置序号的元素与项目呈对应关系。
上面从模块化功能实体的角度对本发明实施例中的随机播放装置进行描述,下面从硬件处理的角度对本发明实施例中的随机播放装置进行描述,请参阅图5,本发明实施例中随机播放装置另一实施例包括:
输入装置501、输出装置502、处理器503和存储器504(其中随机播放装置中的处理器503的数量可以一个或多个,图5中以一个处理器503为例)。在本发明的一些实施例中,输入装置501、输出装置502、处理器503和存储器504可通过总线或其它方式连接,其中,图5中以通过总线连接为例。
其中,通过调用存储器504存储的操作指令,处理器503,用于执行如下步骤:
对原始播放列表中的项目进行分组;
针对每个小组,随机生成数值序列,其中,所述数值序列的长度为所述小组所包含项目的总数,以使得所述数值序列中的每个元素都能唯一对应一个所述小组中的项目;
根据所述数值序列中元素的大小顺序依次取出与所述元素对应的所述小组中的项目,得到小组列表;
对各小组得到的小组列表进行汇总,得到随机播放列表。
在本发明的一些实施例中,处理器503还可以用于执行以下步骤:
在所述根据所述数值序列中元素的大小顺序依次取出与所述元素对应的所述小组中的项目,得到小组列表之前,根据预设规则对所述数值序列进行运算;
根据运算后的数值序列中元素的大小顺序依次取出与所述元素对应的所述小组中的项目,得到小组列表。
在本发明的一些实施例中,处理器503具体可以用于执行以下步骤:
将所述数值序列与目标序列进行按位运算,其中,所述目标序列由所述项目在所述小组中的位置序号组成。
在本发明的一些实施例中,所述按位运算包括按位相加运算、按位异或、按位与或者按位与非。
在本发明的一些实施例中,所述数值序列中每个元素对应一个所述小组中的项目是指具有同一位置序号的元素与项目呈对应关系。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。