C++ Algorithm random_shuffle()

30 Aug 2024 | 3 分钟阅读

C++ 算法 random_shuffle() 通过将范围内的元素随机放置来重新排序。

第一个版本使用内部随机数生成器,第二个版本使用随机数生成器,它是一种特殊的函数对象,作为参数显式传递。

语法

参数

first:指向要重新排列的范围中第一个元素位置的随机访问迭代器。

last:指向要重新排列的范围中最终元素之后一个位置的随机访问迭代器。

result:指向目标范围中第一个元素位置的输出迭代器。

gen:一个特殊的函数对象,称为随机数生成器。

返回值

复杂度

复杂性与范围 [first, last) 成线性关系:获取随机值并交换元素。

数据竞争

范围 [first, last) 中的对象被修改。

结果和返回值之间的范围内的对象将被更改。

异常

如果任何随机数生成、元素交换或迭代器操作抛出异常,此函数将抛出异常。

请注意,无效参数会导致未定义行为。

示例 1

让我们看一个简单的例子来演示 random_shuffle() 的用法

输出

before: 0 1 2 3 4 5 6 7 8 9 
after: 4 3 7 8 0 5 2 1 6 9

示例 2

让我们看另一个简单示例

输出

Here are the values in the vector:
1 2 3 4 5 6 7 8 9 10 

Now we randomize the order of the values.

Here are the revised contents of the vector:
5 4 8 9 1 6 3 2 7 10  

示例 3

让我们看另一个简单示例

输出

Original order :  A   2   3   4   5   6   7   8   9  10   J   Q   K  
Shuffling cards in uniformly random order ... 
Pick any three cards ... 
You have got   : 9, 8, 4

示例 4

让我们看另一个简单示例

输出

myvector contains: 9 7 5 6 3 4 2 8 1

下一主题C++ 算法