目标是从 1..N 中随机选择一首歌曲,N 首歌曲不重复,并且能够像在 iPod 中一样向前和向后迭代。我使用哈希表来存储随机歌曲。有没有更好的办法?
问问题
308 次
2 回答
4
一种简单的算法是从所有 N 首歌曲的列表开始,然后使用像Fisher-Yates Shuffle这样的算法随机打乱数组元素。完成此操作后,您将以随机顺序对所有歌曲进行排序,并且没有重复。如果您跟踪列表中的当前索引,则可以通过在数组中向前或向后移动来实现下一个和上一个。
希望这可以帮助!
于 2013-05-06T18:05:40.523 回答
1
一种方法是使用基于 LCG 的伪随机数生成器来选择歌曲。在每一步,歌曲 n+1 是 (an+b)Mod 2^N。确保 LCG 的周期大于 N。使用 LCG 的倒数向后迭代
于 2013-05-06T18:05:53.777 回答