2021년 5월 26일 수요일

의사 난수 생성기 - Pseudo Random Number Generator (PRNG)

 

의사 난수 생성기 (Pseudo Random Number Generator : PRNG)는 많은 양의 난수가 필요할때 확률 및 통계 응용프로그램을 위해 작성되고 사용되는 프로그램입니다. 이러한 프로그램의 대부분은 일반적으로 10진수로 된 끝없는 한자리 숫자 문자열을 생성합니다. 의사 난수의 큰 샘플을 채취하면 {0,1,2,3,4,5,6,7,8,9} 집합의 10자리 숫자는 순서대로 균등하게 분배되지 않을지라도 동일한 빈도로 발생합니다.

 

많은 알고리즘은 주어진 지점까지의 숫자를 기반으로 다음 숫자를 이론적으로 예측하는 것이 불가능한 숫자의 끝없는 문자열인 진정으로 무작위 숫자 시퀀스를 생성하려는 시도로 개발되었습니다. 그러나 알고리즘의 존재 자체는 아무리 정교하더라도 다음 숫자를 예측할 수 있음을 의미합니다. 이로 인해 이러한 기계로 생성되는 숫자 문자열에 대해서 의사 랜덤이라는 용어가 생겼습니다. 대부분의 응용프로그램에서 난수 시퀀스는 엄격한 정의에 따르면 실제로는 무작위가 아닙니다.

 

π (유클리드 평면에서 원의 원주와 지름의 비율), e (자연 대수) 또는 완전 제곱이 아닌 숫자의 제곱근 (2 1/2 또는 10 1/2와 같은)과 같은 숫자들를 일부 수학자들은 진정한 무작위라고 믿습니다. 컴퓨터는 이러한 숫자를 소수 자릿수 수천, 수백만, 수십억 또는 수조로 확장하도록 프로그래밍할 수 있습니다. 가장 오른쪽에 있는 숫자로 시작하거나 2번째, 3번째, 4번째 또는 n번째 숫자를 사용하는 시퀀스를 선택할 수 있습니다. 그러나 일부 이론가들은 그러한 숫자들을 결정하는 알고리즘은 진정한 무작위가 아니라 의사 무작위라고 주장합니다.

 

진정한 난수에 대해서 논란의 여지가 있지만 의사 난수 생성기 (PRNG)는 수학적 공식을 사용하여 난수 시퀀스를 생성하는 알고리즘을 사용하는데 초기 시드 (Seed) 상태를 사용하여 임의의 시작 상태에서 시작하여 난수의 속성에 가까운 일련의 숫자를 생성하도록 합니다.

 

댓글 없음:

댓글 쓰기