template<class RandomAccessIterator, class UniformRandomBitGenerator>
void shuffle(RandomAccessIterator first,
RandomAccessIterator last,
UniformRandomBitGenerator&& g);
template<random_Βaccess_Βiterator I, sentinel_Βfor<I> S, class Gen>
requires permutable<I> &&
uniform_Βrandom_Βbit_Βgenerator<remove_reference_t<Gen>>
I ranges::shuffle(I first, S last, Gen&& g);
template<random_Βaccess_Βrange R, class Gen>
requires permutable<iterator_t<R>> &&
uniform_Βrandom_Βbit_Βgenerator<remove_reference_t<Gen>>
borrowed_iterator_t<R> ranges::shuffle(R&& r, Gen&& g);