假设我有一个嵌套数组“playlistItems”,数组中的每个项目都有一个数组,包括: 轨道 ID(数字,唯一) 曲目标题(字母数字) 轨道长度(数字,以秒为单位) 曲目频率(数字,曲目每小时播放的次数) Provide Extra Plays(真,假 - 曲目是否应该用于填补生成的播放列表中的空白,即它会获得比指定更高的频率)
let playlistItems = [
[354, 'This Song', 10, 60, TRUE],
[261, 'That Song', 10, 10, TRUE],
[854, 'Another Song', 10, 10, FALSE],
[563, 'Your Song', 20, 10, FALSE],
[729, 'Their Song', 10, 30, FALSE]
];
我想从这个数组中生成一个新的随机数组(一个播放列表),它是给定轨道频率下的最短项目列表: 轨道位置(数字,唯一 - 播放列表中的轨道位置) 曲目 ID(数字)
let generatedPlaylist = [
[001, 261],
[002, 563],
[003, 354],
[004, 729],
[005, 354],
[006, 729],
[007, 563],
[008, 354],
[009, 729],
[010, 261],
[011, 354]
etc...etc....
];
出于这个论点的目的,我们假设每个曲目将在前一个曲目之后直接播放,没有延迟(即 10 秒内的 6 个项目将持续 1 分钟),尽管如果有一种方法可以考虑这样的因素会很好延迟整体计算,以便仍然达到给定的频率。
另一个愿望清单项目是没有项目连续播放两次。