Namespaces
Variants

std::linear_congruential_engine<UIntType,a,c,m>:: linear_congruential_engine

From cppreference.net
linear_congruential_engine ( ) : linear_congruential_engine ( default_seed ) { }
(1) (C++11부터)
explicit linear_congruential_engine ( result_type value ) ;
(2) (C++11부터)
template < class SeedSeq >
explicit linear_congruential_engine ( SeedSeq & seq ) ;
(3) (C++11부터)
linear_congruential_engine ( const linear_congruential_engine & other ) ;
(4) (C++11부터)
(암시적으로 선언됨)

의사 난수 엔진을 생성합니다.

1) 기본 생성자.
  • 기본 생성된 엔진이 std::minstd_rand0 타입인 경우, 이를 10000회 연속 호출했을 때 생성되는 값은 1043618065 입니다.
  • 기본 생성된 엔진이 std::minstd_rand 타입인 경우, 이를 10000회 연속 호출했을 때 생성되는 값은 399268537 입니다.
2) 시드 값 value 로 엔진을 생성합니다. 엔진의 초기 상태 는 다음과 같이 결정됩니다:
  • 만약 c % m == 0 value % m == 0 가 모두 true 인 경우, 상태는 1 입니다.
  • 그렇지 않으면, 상태는 value % m 입니다.
3) 시드 시퀀스 seq 를 사용하여 엔진을 생성합니다. std:: size_t ( std:: log2 ( m ) / 32 ) + 1 k 로 주어졌을 때, 엔진의 초기 상태 는 다음과 같이 결정됩니다:
  1. 길이 k + 3 의 가상 배열 객체 a 를 생성합니다.
  2. seq. generate ( a + 0 , a + k + 3 ) 를 호출합니다.
  3. S (∑ k-1
    j=0
    a j+3 ·2 32j
    ) mod m
    로 둡니다.
  4. c % m == 0 S == 0 가 모두 true 이면 엔진의 상태를 1 로 설정합니다. 그렇지 않으면 엔진의 상태를 S 로 설정합니다.
이 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다: SeedSeq SeedSequence 요구 사항을 충족하는 경우에만.
4) 복사 생성자. 생성 시, * this == other true 입니다.

목차

매개변수

value - 내부 상태 초기화에 사용할 시드 값
seq - 내부 상태 초기화에 사용할 시드 시퀀스

복잡도

1,2) 상수.
3) seq.generate 호출의 복잡도와 동일합니다.
4) 상수.

예외

3) 만약 SeedSeq std::seed_seq 가 아닌 경우, seq.generate 호출에서 발생하는 예외를 던집니다.

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2181 C++11 오버로드 ( 3 ) seq.generate 호출이 예외를 발생시켜도 예외를 발생시키지 않음 예외를 전파함
P0935R0 C++11 기본 생성자가 explicit였음 implicit로 변경됨

참고 항목

엔진의 현재 상태를 설정합니다
(public member function)