目标是从1..N中选择一首随机歌曲而不重复N首歌曲,并且能够像在iPod中一样前后迭代。我使用哈希表来存储随机歌曲。还有更好的方法吗?
答案 0 :(得分:4)
这样做的一个简单算法是从所有N首歌曲的列表开始,然后使用像Fisher-Yates Shuffle这样的算法随机混洗数组元素。完成后,您将按随机顺序排列所有歌曲并且没有重复。如果您在列表中跟踪当前索引,则可以通过在数组中向前或向后移动来实现next和previous。
希望这有帮助!
答案 1 :(得分:1)
一种方法是使用基于LCG的伪随机数发生器来选择歌曲。在每个步骤中,歌曲n + 1是(an + b)Mod 2 ^ N.确保LCG的周期高于N.使用LCG的倒数向后迭代