template<class RandomAccessIterator, class UniformRandomBitGenerator>
void shuffle(RandomAccessIterator first,
RandomAccessIterator last,
UniformRandomBitGenerator&& g);
namespace ranges {
template<RandomAccessIterator I, Sentinel<I> S, class Gen>
requires Permutable<I> &&
UniformRandomBitGenerator<remove_reference_t<Gen>>
I shuffle(I first, S last, Gen&& g);
template<RandomAccessRange R, class Gen>
requires Permutable<iterator_t<R>> &&
UniformRandomBitGenerator<remove_reference_t<Gen>>
safe_iterator_t<R> shuffle(R&& r, Gen&& g);
}