```
template<class RandomAccessIterator, class UniformRandomBitGenerator>
void shuffle(RandomAccessIterator first,
RandomAccessIterator last,
UniformRandomBitGenerator&& g);
```

Requires: RandomAccessIterator shall satisfy the requirements of ValueSwappable. The type remove_reference_t<UniformRandomBitGenerator> shall meet the requirements of a uniform random bit generator type whose return type is convertible to iterator_traits<RandomAccessIterator>::difference_type.

Effects: Permutes the elements in the range [first, last) such that each possible permutation of those elements has equal probability of appearance.