算法面试题:音乐播放器的随机播放

2019 年 5 月 23 日 七月在线实验室


音乐播放器的随机播放



题目描述:
假设张三的mp3里有1000首歌,现在希望设计一种随机算法来随机播放。


与普通随机模式不同的是,张三希望每首歌被随机到的概率是与一首歌的豆瓣评分(0~10分)成正比的,如朴树的《平凡之路》评分为8.9分,逃跑计划的《夜空中最亮的星》评分为9.5分,则希望听《平凡之路》的概率与《夜空中最亮的星》的概率比为89:95。

现在我们已知这1000首歌的豆瓣评分:
(1)请设计一种随机算法来满足张三的需求。
(2)写代码实现自己的算法。

分析与解法:

#include#include#includeusing namespace std;  int findIdx(double songs[],int n,double rnd){    int left=0;    int right=n-1;    int mid;    while(left<=right){        mid=(left+right)/2;        if((songs[mid-1]<=rnd) && (songs[mid]>=rnd))            return mid;        if(songs[mid]>rnd)            right=mid-1;        else            left=mid+1;    }//    return mid;}  int randomPlaySong(double sum_scores[],int n){    double mx=sum_scores[n-1];    double rnd= rand()*mx/(double)(RAND_MAX);    return findIdx(sum_scores,n,rnd);}  int main(){    srand(time(0));    double scores[]={5.5,6.5,4.5,8.5,9.5,7.5,3.5,5.0,8.0,2.0};    int n=sizeof(scores)/sizeof(scores[0]);    double sum_scores[n];    sum_scores[0]=scores[0];      for(int i=1;i

大量学员拿到近30-40万年薪

应届生秋招记录52万年薪

多位名校博士+BAT专家手把手教学


现在报名

18VIP会员

[包2018全年在线课程全年GPU]


原价18000元

前30人专属特惠价

仅剩5个名额



扫码查看详情

还能直接领红包

只限今日有效,快扫它↓


他用机器学习减肥20斤!程序员必看,你想不到的机器学习妙用

Github最火!程序员必须知道22大定律和法则

“阅读原文”你来决定未来的内容
你在看吗?
登录查看更多
0

相关内容

【干货书】数值计算C编程,319页pdf,Numerical C
专知会员服务
71+阅读 · 2020年4月7日
谷歌机器学习速成课程中文版pdf
专知会员服务
147+阅读 · 2019年12月4日
【机器学习课程】Google机器学习速成课程
专知会员服务
169+阅读 · 2019年12月2日
BAT机器学习面试1000题(721~725题)
七月在线实验室
11+阅读 · 2018年12月18日
带学吴恩达机器学习课程和作业,带打Kaggle全球顶级大赛
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
BAT题库 | 机器学习面试1000题系列(第196~200题)
七月在线实验室
17+阅读 · 2017年11月16日
机器学习: 入门与求职建议
九章算法
4+阅读 · 2017年10月6日
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Arxiv
9+阅读 · 2018年3月23日
VIP会员
相关资讯
BAT机器学习面试1000题(721~725题)
七月在线实验室
11+阅读 · 2018年12月18日
带学吴恩达机器学习课程和作业,带打Kaggle全球顶级大赛
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
BAT题库 | 机器学习面试1000题系列(第196~200题)
七月在线实验室
17+阅读 · 2017年11月16日
机器学习: 入门与求职建议
九章算法
4+阅读 · 2017年10月6日
Top
微信扫码咨询专知VIP会员