以前以为听歌时候的随机播放时在听第一首歌的时候随机生成第二首歌的序号,听第二首歌的时候随机生成第三首的序号,但是当我返回上一首的时候发现他的记录是保存的,而当你跳过这首直接听下一首的时候再次返回,记录还是保存好的。所以我猜测随机播放可能是随机生成了一个数组。后来和别人聊天发现随机歌单的生成有一种叫做shuffle算法。基本是利用rand()和srand()算法实现的:
int main(){
int a[8]={2,3,4,1,6,8,7,5};
shuffel(a,8);
for(int i=0;i<8;i++)
cout<<a[i]<<" ";
}
void shuffle(int a[],int len){
int key;
int temp;
srand((unsigned int)time(NULL));
for(int i=0;i<len;i++){
key=rand(0,len);
temp=a[i];
a[i]=a[key];
a[key]=a[i];
}
}
void rand(int start,int end){
return rand()(end-1)+start;
}
当然在C++中也实现了shuffle算法。http://www.cplusplus.com/reference/algorithm/shuffle/?kw=shuffle这个链接讲了shuffle用法有兴趣的可以看一下。