0

可能的重复:
集合的伪随机遍历

我正在尝试编写一种算法,将播放列表中的歌曲按随机顺序排列,所以如果有 10 首歌曲,我需要随机数生成器在重复之前命中 0-9 的每个值。使用算法: ,有没有办法用 a和x_current = (a * x_prev + c) mod m的某些值来实现这一点?cm

4

2 回答 2

2

尝试使用std::random_shuffle

 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]);
于 2012-11-11T01:35:34.310 回答
0

看看这个问题。此外,对于小型播放列表,只需用歌曲编号随机排列数组就足够了。

于 2012-11-11T01:35:06.287 回答