template<class R, class G>
requires output_range<R, invoke_result_t<G&> && uniform_random_bit_generator<remove_cvref_t<G>>
constexpr borrowed_iterator_t<R> ranges::generate_random(R&& r, G&& g);
template<class G, output_iterator<invoke_result_t<G&> O, sentinel_for<O> S>
requires uniform_random_bit_generator<remove_cvref_t<G>>
constexpr O ranges::generate_random(O first, S last, G&& g);
template<class R, class G, class D>
requires output_range<R, invoke_result_t<D&, G&> && invocable<D&, G&> &&
uniform_random_bit_generator<remove_cvref_t<G>> &&
is_arithmetic_v<invoke_result_t<D&, G&>
constexpr borrowed_iterator_t<R> ranges::generate_random(R&& r, G&& g, D&& d);
template<class G, class D, output_iterator<invoke_result_t<D&, G&> O, sentinel_for<O> S>
requires invocable<D&, G&> && uniform_random_bit_generator<remove_cvref_t<G>> &&
is_arithmetic_v<invoke_result_t<D&, G&>
constexpr O ranges::generate_random(O first, S last, G&& g, D&& d);