1
2
你可以对歌曲进行加权;比如说每首歌的开头都有1.0分,如果向下翻,则为0.5分,如果向上翻,则为1.5分。然后你从所有的分数中选择一个随机的元素,它的概率,不管用它的,嗯,重量来衡量。我想到的快速而肮脏的方法是对所有权重求和。选择一个小于和的随机数。循环播放所有歌曲,直到currentweight+songweight>随机数(否则currentweight+=songweight) 当然,通过引入协作过滤,您可以任意地使这变得更复杂:) 想象五首歌。前两个拇指朝上,下一个拇指朝下,两个中性。 _1:1.5,2:1.5,3:0.5,4:1,5:1_ 总数是5.5。现在,我们选择一个随机数<5.5,然后看:它是2.43789。 现在让我们找到这个随机数所属的歌曲。 从当前权重=0开始。第一首歌的重量=1.5。currentweight+1.5<2.43789->我们继续,但按这首歌的权重增加currentweight。 所以现在currentweight=1.5。下一首歌的重量:又是1.5。但现在,currentweight+1.5==3>2.43789。这意味着我们选择了第二首歌! 你在这里所做的基本上是在一行中选择一个随机的点,但是增加该行中的“区域”,如果歌曲是竖起的,那么就会选择一首歌曲。 这是否会产生许多重复,基本上取决于你增加/减少歌曲重量的力度。 |
2
1
我假设潘多拉使用一个标签系统来分类他们的歌曲。通过这种方式,你可以通过抽取“竖起”标签的最高频率来建立用户音乐品味的档案。不幸的是,他们从一个庞大的标签音乐数据库中抽取音乐来提供给他们的用户,这可能比选择它们的算法更难开发。 |
3
1
您还可以为乐队/歌手和流派创建一个分级系统,并根据每个“大拇指向上”,您可以为乐队/歌手和流派添加1个(或您决定的任何值)。然后,当决定播放下一首歌曲时,可以根据用户对某个乐队/歌手和/或流派的兴趣来权衡该决定。与“拇指向下”的歌曲相反。 |
4
1
可能是这样的: 1)创建三个随机排列的歌曲流(或播放列表),如代码片段,但使它们相互排斥:喜欢、不喜欢、不分级。根据这些组的大小,每个组在重复之前都有一个持续时间。 2)创建一个函数,将流合并为单个流,同时遵守某些规则。主要的规则是期望的流的混合,比如说60%的人喜欢,38%的人不喜欢,2%的人不喜欢,等等。只有当喜欢的音乐流的持续时间太短而无法遵循“歌曲重复之间的最短时间”规则时,您才必须偏离所需的混音模式。 3)您可能还希望定期重新计算所有流。这里比较棘手的部分可能是避免重新计算引起的重复。也许你在(1)中的随机排序也可以考虑到一些权重或最近播放的歌曲的偏移。 |
RNSVN · ubuntu 14.04上不提供Geany插件首选项 9 年前 |
user3165683 · 首选项Libgdx Java 10 年前 |
user3243651 · 从不同的应用程序访问共享引用文件[重复] 10 年前 |
Pztar · Android-首选项屏幕不显示首选项 11 年前 |
Frizinator · 将字符串放入首选项时,它不会更改。有什么想法吗? 11 年前 |
luthier · 偏好活动中的偏好自行停用 11 年前 |