| [section:random_shuffle random_shuffle] |
| |
| [heading Prototype] |
| |
| `` |
| template<class RandomAccessRange> |
| RandomAccessRange& random_shuffle(RandomAccessRange& rng); |
| |
| template<class RandomAccessRange> |
| const RandomAccessRange& random_shuffle(const RandomAccessRange& rng); |
| |
| template<class RandomAccessRange, class Generator> |
| RandomAccessRange& random_shuffle(RandomAccessRange& rng, Generator& gen); |
| |
| template<class RandomAccessRange, class Generator> |
| const RandomAccessRange& random_shuffle(const RandomAccessRange& rng, Generator& gen); |
| `` |
| |
| [heading Description] |
| |
| `random_shuffle` randomly rearranges the elements in `rng`. The versions of `random_shuffle` that do not specify a `Generator` use an internal random number generator. The versions of `random_shuffle` that do specify a `Generator` use this instead. Returns the shuffles range. |
| |
| [heading Definition] |
| |
| Defined in the header file `boost/range/algorithm/random_shuffle.hpp` |
| |
| [heading Requirements] |
| |
| [*For the version without a Generator:] |
| |
| * `RandomAccessRange` is a model of the __random_access_range__ Concept. |
| |
| [*For the version with a Generator:] |
| |
| * `RandomAccessRange` is a model of the __random_access_range__ Concept. |
| * `Generator` is a model of the `RandomNumberGeneratorConcept`. |
| * `RandomAccessRange`'s distance type is convertible to `Generator`'s argument type. |
| |
| [heading Precondition:] |
| |
| * `distance(rng)` is less than `gen`'s maximum value. |
| |
| |
| [heading Complexity] |
| |
| Linear. If `!empty(rng)`, exactly `distance(rng) - 1` swaps are performed. |
| |
| [endsect] |
| |
| |