美文网首页
设计一种随机算法来随机播放歌曲

设计一种随机算法来随机播放歌曲

作者: dreamsfuture | 来源:发表于2018-03-20 22:45 被阅读0次

题目描述

假设张三的mp3里有1000首歌,现在希望设计一种随机算法来随机播放。与普通随机模式不同的是,张三希望每首歌被随机抽到的概率是与一首歌的豆瓣评分(0~10分)成正比的,如朴树的《平凡之路》评分为8.9分,逃跑计划的《夜空中最亮的星》评分为9.5分,则希望听《平凡之路》的概率与《夜空中最亮的星》的概率比为89:95,。现在我们已知这1000首歌的豆瓣评分:
(1)请设计一种随机算法来满足张三的需求。
(2)请写代码实现自己的算法。

题目分析一

①将一千首歌存在数组当中,数组下标对应0-999,数组内容存歌曲的评分;
②随机取0-999中的一个数字,取到之后查看对应的评分,如果评分为9.5,则随机取1-100中的数字,小于等于95则播放这首歌,
③重复上述②过程

题目分析二

①将一千首歌存在数组当中,数组下标对应0-999,数组内容存歌曲的评分;
②随机取0-999中的一个数字,取到之后查看对应的评分,如果评分为9.5,则随机取1-100中的数字,小于等于95则播放这首歌,
③当某一首歌曲被选中后,与最后一首歌曲调换位置,然后随机数减一,等到下一首被选中后,与倒数第二的位置交换,随机数减一,依次类推,
④重复上述②③过程。

代码实现

public class RandomSongs {//JAVA 
  //其实这种方法,对于那两首歌并不是完全的89:95,但是在歌曲总数 很多的情况下,很接近原始评分比例了 
  public int randomSong(double[] grades, int length){ //grades 是输入参数,表明每一首歌的评分,共1000个;返回值是歌曲的编号 
    while(true){ 
      int x=(int)(Math.random()*(length));//首先是平等地选歌 
      double y=(Math.random()*10);//然后进行评分验证: 
      if(grades[x]>=y){ 
          return x; 
      } 
    }
} 
//可以用下面的测试方法来验证,我们举一个7首歌曲的歌单 
  public static void main(String[] args){ 
    RandomSongs rs=new RandomSongs(); 
    double[] grades={8.9, 9.0, 8.0, 6, 2, 5.1, 9.5}; 
    int[] prob=new int[grades.length];  //prob是用来记录歌曲播放的次数
    for(int i=0;i<prob.length;i++){ 
      prob[i]=0;
    } 
    for(int i=0;i<grades.length;i++){ 
      //int x=rs.randomSong(grades, grades.length -1 - i); 
      int x = rs.randomSong(grades, grades.length);
      prob[x]++; 
      //swap(grades,x,grades.length - 1 - i);
    } 
    for(int i=0;i<prob.length;i++){ 
      System.out.print(prob[i]+"\t"); 
    } 
  } 
  public void swap(double[] arr, int a, int b){
    double tmp = arr[a];
    arr[a] = arr[b];
    arr[b] = tmp;
  }
}

输出结果:

//4 2 1 0 0 0 0
1 3 0 1 0 0 2
参考文献
[1] 设计一种随机算法来随机播放歌曲

相关文章

  • 设计一种随机算法来随机播放歌曲

    题目描述 假设张三的mp3里有1000首歌,现在希望设计一种随机算法来随机播放。与普通随机模式不同的是,张三希望每...

  • 按比例生成随机数求解

    假设张三的mp3里有1000首歌,现在希望设计一种随机算法来随机播放。与普通随机模式不同的是,张三希望每首歌被...

  • 一些比较好的技术资料

    随机数 随机数都是骗人的 缓存 算法 设计 大数据 编程语言

  • 什么是确定性算法?什么是随机化算法?

    随机化算法是一种在算法中使用了随机函数,且随机函数的返回值直接或间接的影响了算法的执行流程或执行结果。而确...

  • 算法导论第5.3章 - 随机算法

    随机算法 简而言之,随机算法就是随机设定输入的排列组合。与概率分析类似,这种方法可以用这种方法来估算算法的平均情况...

  • 机器学习(九) 随机森林

    随机森林是在Bagging策略的基础上进行修改后的一种算法。 随机:数据采样随机,特征选择随机 森林:很多个决策树...

  • 集成学习之Bagging和RF

    一、什么是随机森林 二、随机森林的两个随机 三、随机森林算法过程 四、为什么如此受欢迎 五、随机森林算法的优缺点 ...

  • 认真的聊一聊决策树和随机森林

    随机森林是一种简单又实用的机器学习算法。 “随机“表示2种随机性,即每棵树的训练样本、训练特征随机选取。 多棵决策...

  • 1 . spark ml 随机森林练习代码讲解

    一,算法简介 随机森林是决策树的集成算法。随机森林包含多个决策树来降低过拟合的风险。随机森林同样具有易解释性、可处...

  • 随机森林算法梳理

    随机森林分类器是一种基于装袋(bagging)全称Bootstrap Aggregation。的集成算法 随机森林...

网友评论

      本文标题:设计一种随机算法来随机播放歌曲

      本文链接:https://www.haomeiwen.com/subject/noyiqftx.html