可能的重复:
集合的伪随机遍历
我正在尝试编写一种算法,将播放列表中的歌曲按随机顺序排列,所以如果有 10 首歌曲,我需要随机数生成器在重复之前命中 0-9 的每个值。使用算法: ,有没有办法用 a和x_current = (a * x_prev + c) mod m
的某些值来实现这一点?c
m
vector<int> playOrder;
// set some values:
for (int i=1; i<10; ++i) playOrder.push_back(i); // 1 2 3 4 5 6 7 8 9
// Don't forget to seed, or mix will be the same each run
srand(time(NULL));
// using built-in random generator:
random_shuffle ( playOrder.begin(), playOrder.end() );
// An example of how you might use the new random array.
for(int i=0; i<playOrder.size(); i++)
player.PlayTrack(playOrder[i]);
看看这个问题。此外,对于小型播放列表,只需用歌曲编号随机排列数组就足够了。