4.4.4 使用random_shuffle()算法
接下来,程序准备使用random_shuffle()算法对分数进行乱序。与生成单个随机数时一样,程序在调用random_shuffle()之前为随机数生成器确定种子。因此,每次运行程序时,分数的顺序可能都不相同。
- srand(static_cast<unsigned int>(time(0)));
接着,程序随机地对分数进行重新排序。- random_shuffle(scores.begin(), scores.end());
random_shuffle()算法将序列中的元素进行乱序。该算法需要序列的起点迭代器和终点迭代器来进行乱序操作。在本例中,程序将scores.begin()和scores.end()返回的迭代器传递给算法。这两个迭代器表示需要对scores中的全部元素进行乱序操作。程序的执行结果是,scores包含了相同的分数,只是顺序不同。
最后程序显示分数,证明乱序成功。
技巧
尽管或许不需要对某个高分列表进行乱序操作,但对于游戏而言,random_shuffle()依然是个很有价值的算法。它可以用来洗牌,也可以打乱玩家在游戏的某一关中遭遇敌人的顺序。