모든 의사 난수 생성기는 궁극적으로 주기적인가? 아니면 결국 주기적인가?
주기적으로 나는 합리적인 숫자와 마찬가지로 결국 주기적 하위 시퀀스를 생성한다는 것을 의미합니다 ...
그리고 의사 랜덤은 난수의 알고리즘 / 수학적 생성을 의미합니다 ...
모든 의사 난수 생성기는 궁극적으로 주기적인가? 아니면 결국 주기적인가?
주기적으로 나는 합리적인 숫자와 마찬가지로 결국 주기적 하위 시퀀스를 생성한다는 것을 의미합니다 ...
그리고 의사 랜덤은 난수의 알고리즘 / 수학적 생성을 의미합니다 ...
답변:
임의의 외부에 의존하지 않고 제한된 양의 메모리를 사용하는 모든 의사 난수 생성기 는 유한 한 상태이기 때문에 궁극적으로 주기적입니다. 당신은 그것들을 그들의 출력을주는 특별한 "출력"상태를 갖는 거대한 결정 론적 유한 오토마타로 생각할 수 있습니다. 모든 유한 오토마타는 결국 주기적이므로 모든 의사 난수 생성기는 결국 주기적 출력을 생성합니다.
그러나 기간 길이는 엄청날 수 있습니다. 예를 들어, 128 비트의 암호화 상태와 PRNG는 가끔씩 만 사이클 수 로 출력 한 모든 나노초 비트 출력의 비트, 그래서하더라도 솔라 죽은 감수 PRNG의 반복 될 것이다.
PRNG가 무한한 양의 메모리를 사용할 수 있으면 (실제적이지 않음) 예를 들어 의 이진 확장을 출력 할 수 있습니다
PRNG는 상태 머신입니다. 그것들이 내부 입력만을 기반으로한다면 (하드웨어와 소프트웨어의 조합 인 Poker Stars RNG와 대조적으로 ... 음성 샘플에서 지속적으로 시드) C는 (C, S1, ...)입니다. 현재 (또는 이전) 값이고 S1, ...은 상태 세트가 될 수 있습니다.
C의 가능한 N 값이 있고 (메모리가 제한되어 있기 때문에) N + 1 번 반복하면 C에 대해 같은 값을 적어도 두 번 누르십시오. 2N + 1 회 반복하면 C에 대해 같은 값을 3 번 이상 맞습니다.
T = (Ct, S1t, S2t)를 특정 상태 (현재 값 및 기타 상태)로 둡니다.
M = # {S1} X에 대한 값} {S2} X에 대한 값} {{}은 가능한 상태 조합의 기본이됩니다 (다시 : 메모리가 제한되어 있기 때문에).
NM + 1 배의 알고리즘을 반복하면 동일한 상태 (Ct, S1t, S2t, ...)의 두 배 이상에 도달하여 처음과 동일한 출력 값과 동일한 후속 상태 시퀀스를 생성합니다. 너무 주기적으로.
주기적이지 않은 의사 랜덤 시퀀스의 간단한 예 : 모든 양의 정수의 이진 표현을 순서대로 연결하십시오.
110111001011101111000...
( "."를 앞에 붙이고 이진 Champernowne 상수 라고합니다 .)
물론 이것은 의사 난수 시퀀스에 이르기까지 품질이 높지는 않지만 많은 메모리를 사용하지 않고도 가능하다는 것을 보여줍니다.
이 예제에서 상태를 저장하는 데 필요한 메모리는 이론적으로 제한이 없습니다. 그러나 그것은 매우 느리게 성장합니다 (즉, 숫자를 계산하는 데 필요한 메모리와 비교할 때
무한한 메모리 요구 사항은 튜링 머신의 문제가 아니며 성장 속도가 너무 느리기 때문에 실제로는 문제가되지 않지만이 용도에 따라 다릅니다.
차별화 요소는 규칙적인 간격으로 하위 시퀀스를 가져 와서 PRNG에서 다른 PRNG를 파생시키는 것과 같은 일을하려는 경우입니다. 비주기적인 PRNG로 시작하면 샘플링 한 기간에 관계없이 비주기적인 결과를 얻을 수 있지만 기간의 PRNG로 시작하는 경우