ranges::generate_random
ranges::generate_random (난수 범위 채우기)
난수 생성기로 범위를 채우는 ranges 버전 알고리즘이에요. <algorithm>/
출처: cppreference
본문
std::ranges::generate_random은 난수 생성기 gen으로 범위를 채워요.
namespace std::ranges {
template< std::input_or_output_iterator O, std::sentinel_for<O> S,
std::uniform_random_bit_generator G, class Proj = std::identity,
class D = std::uniform_random_bit_generator_result_t<G> >
requires std::indirectly_writable<O, std::projected_value_t<Proj, D>>
constexpr O generate_random( O first, S last, G gen, Proj proj = {} );
}
[first, last)의 각 요소에gen()이 생성한 난수를 대입해요.- 기본 결과 타입은 생성기의 타입이고,
proj로 변환을 지정할 수 있어요.
std::mt19937 rng(12345);
std::vector<int> v(8);
std::ranges::generate_random(v, rng);
// 난수로 채워짐
C++26에 새로 추가된 함수로, 미리 생성기 결과를 담는 방식보다 안전하게 난수를 컨테이너에 채우는 데 써요.