我試圖寫一個算法,將放在播放列表的歌曲爲隨機順序,所以如果有10首歌曲,我需要隨機數發生器在重複之前從0-9中打出每個值。使用算法:x_current = (a * x_prev + c) mod m
,有沒有什麼辦法可以達到這一點,對於c
和m
的某些值?
回答
看看this question。另外,對於小型播放列表,只需用歌曲編號對數組進行洗牌就足夠了。
「簡單地洗牌數組」是問題描述。 –
以不重複的順序遍歷集合是問題描述。改組數組將是一個可能的解決方案。 –
你是對的;我只是建議您可能需要從問題描述中稍微進一步,以便OP將其視爲可能的解決方案。 :)他提出的「算法」已經打算基本上洗牌一個數組,他試圖找到一個不同的方式來做到這一點。 –
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]);
或者只是std :: shuffle,使用'
- 1. 僞隨機數生成
- 2. 生成加/減1整數的僞隨機序列
- 3. 如何生成相同的一系列僞隨機整數?
- 4. 僞隨機的URL生成
- 5. 僞隨機整數
- 6. 使用垃圾值生成隨機或僞隨機數
- 7. 在隨機生成50個隨機數中使用隨機數#
- 8. Lisp:生成一個10個隨機整數的列表
- 9. R生成聚簇的僞隨機數
- 10. 生成可靠的僞隨機數
- 11. 生成強的僞隨機數字
- 12. 如何在Haskell中隨機生成一個隨機生成的數字列表
- 13. 通過僞隨機樸素隨機數生成器生成隨機數序列的正確方法
- 14. 生成25個僞隨機字符串
- 15. Matlab:如何生成僞隨機數
- 16. 生成一個隨機數得到一個隨機列表項
- 17. 使用vim生成基於整數的隨機數表?
- 18. 從32位有限集合生成僞隨機重複整數
- 19. 使用隨機數發生器整數隨機排列
- 20. 生成可重現的大量序列 - 使用僞隨機生成器?
- 21. 生成蟒蛇隨機整數失敗使用隨機庫
- 22. 僞隨機數發生器
- 23. 生成億個隨機整數有效
- 24. 在c中生成整數隨機數#
- 25. 在python中生成隨機整數列表3
- 26. 使用RNGCryptoServiceProvider通過密碼保護僞隨機數生成鹽
- 27. 生成隨機列表中的空格
- 28. 生成只使用一個隨機列表中選擇
- 29. 如何生成隨機數列表?
- 30. 生成唯一隨機數列表
你看的std :: random_shuffle? (和C++ 11中的std :: shuffle?) – rici
你想要的不是隨機數列表,而是交換一定數量的歌曲列表中隨機選擇的條目。 –