C++ 11中的随机排列函数shuffle

random_shuffle算法在C++11之前就已经存在,C++11之后由于右值引用的引入,它的使用范围变大了。

shuffle算法则是从C++11之后才开始出现,可以与随机数和分布库一起使用。

shuffle是从C++11开始支持的,作用是使用一个随机数引擎来打乱[first, last)之间元素的顺序

基本用法

如果不需要特殊的处理需求,那么使用默认的随机数生成器就能简单实现的随机洗牌效果,下面给出代码示例:

RUN_GTEST(ShuffleTest, Default, @);

array<int, 10> a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
printContainer(a, "a: ");

random_shuffle(a.begin(), a.end());     // use default rand().
printContainer(a, "a: ");

sort(a.begin(), a.end());               // 恢复顺序
printContainer(a, "a: ");

default_random_engine defaultEngine;    // default engine.
shuffle(a.begin(), a.end(), defaultEngine);
printContainer(a, "a: ");

END_TEST;

a: 1 2 3 4 5 6 7 8 9 10

a: 9 2 10 3 1 6 8 4 5 7

a: 1 2 3 4 5 6 7 8 9 10

a: 5 1 4 2 6 8 7 3 10 9

From:https://blog.csdn.net/elloop/article/details/50397618

猜你喜欢

转载自blog.csdn.net/tony2278/article/details/81127135