2

目标是从 1..N 中随机选择一首歌曲,N 首歌曲不重复,并且能够像在 iPod 中一样向前和向后迭代。我使用哈希表来存储随机歌曲。有没有更好的办法?

4

2 回答 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 回答