ranges::generate_random

ranges::generate_random (난수 범위 채우기)

난수 생성기로 범위를 채우는 ranges 버전 알고리즘이에요. <algorithm>/ 헤더, C++26부터.

출처: 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에 새로 추가된 함수로, 미리 생성기 결과를 담는 방식보다 안전하게 난수를 컨테이너에 채우는 데 써요.

더 알아보기 (Learn more)

cppreference