Namespaces
Variants

std::philox_engine<UIntType,w,n,r,consts>:: philox_engine

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

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

1) 기본 생성자.
  • 기본 생성된 엔진이 std::philox4x32 타입인 경우, 이를 10000회 연속 호출했을 때 생성되는 값은 1955073260 입니다.
  • 기본 생성된 엔진이 std::philox4x64 타입인 경우, 이를 10000회 연속 호출했을 때 생성되는 값은 3409172418970261260 입니다.
2) 시드 값 value 로 엔진을 생성합니다. 엔진의 초기 상태 는 다음과 같이 결정됩니다: [1]
  • 시퀀스 X 의 모든 요소는 0으로 설정됩니다.
  • 시퀀스 K 의 첫 번째 요소는 value mod 2 w
    로 설정되고, 나머지 요소들은 0으로 설정됩니다.
  • j 의 값은 n - 1 로 설정됩니다.
3) 시드 시퀀스 seq 를 사용하여 엔진을 생성합니다. 엔진의 초기 상태 는 다음과 같이 결정됩니다: [1]
  • 시퀀스 X 의 모든 요소는 0으로 설정됩니다.
  • ( w - 1 ) / 32 + 1 p 로 주어졌을 때, 시퀀스 K 의 요소는 다음 단계에 따라 설정됩니다:
  1. 길이 n / 2 * p 의 가상 배열 객체 a 를 생성합니다.
  2. seq. generate ( a + 0 , a + n / 2 * p ) 를 호출합니다.
  3. [ 0 , n / 2 ) 범위의 각 정수 k 에 대해, K k (∑ p-1
    i=0
    a k·p+i ·2 32i
    ) mod 2 w
    로 설정합니다.
  • j 의 값은 n - 1 로 설정됩니다.
이 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다: SeedSeq SeedSequence 요구 사항을 충족하는 경우에만.
4) 복사 생성자. 생성 시, * this == other true 입니다.


  1. 1.0 1.1 버퍼 Y 는 의도적으로 설정되지 않습니다. j n - 1 로 설정되기 때문에, 다음 상태 전환은 항상 새로운 난수 값을 생성하여 Y 에 저장합니다.

목차

매개변수

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

복잡도

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

예외

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

참고 항목

엔진의 현재 상태를 설정함
(public member function)
엔진의 현재 카운터를 설정함
(public member function)