본문 바로가기

랜덤2

랜덤은 랜덤이 아니다? 난수는 어떻게 만들어 지는가 (2) 오늘은 저번 시간의 과제로 남겨두었던 난수가 실제로 어떻게 만들어지는지에 대해 써보려고 한다. 난수가 생성되는 방법은 여러가지가 있겠지만, 대표적으로 중앙제곱법, 선형합동법, 메르센 트위스터 등이 있다. 이전 시간에 이야기했던 난수표는 이러한 알고리즘들이 나타내는 수의 분포를 정리한 것이다. 이게 무슨 소리인지 이해가 가지 않을 수 있지만, 다음 공식을 보면 이해될 것이다. 위 식은 폰노이만이 1949년에 제안한 중앙 제곱법의 수식이다. 식을 살펴보면 X0가 시드가 될 것이다. a가 2고 시드(X0)로 88를 넣었다고 하면, 7744라는 결과가 나온다. 7744의 가운데 2자리가 Xn+1이 되므로 생성된 난수는 74가 된다. 수학에 밝은 사람이라면 이런 생각이 들 수도 있을 것이다.  "어? 이거 하다보.. 2024. 5. 1.
컴퓨터의 랜덤은 진짜 랜덤이 아니다? 의사 난수에 대한 이야기 (1) 약 6 년 만에 복귀한 첫 글의 주제로 선택한 것은 의사 난수( Pseudo Random )에 대한 이야기이다.의사난수에 대한 설명과 그와 관련된 알고리즘을 하나 소개해볼까 한다.  우리는 컴퓨터로 게임이나 작업, 하다 못해 누가 당첨일지 사다리 타기를 하면서까지 수많은 랜덤을 만나게 되는데, 가끔 '동시'에 서로 다른 사람이 랜덤을 뽑았을 때 동일한 결과를 가져본 적이 있을 것이다. ( 워크래프트나 스타크래프트를 해본 사람은 안다 )  마인크래프트 같은 로그라이크류 게임의 시작에서 어떤 특정한 Seed를 입력하니까 동일한 시작을 할 수도 있다. 그렇다면 이런 의문을 가져본 적이 있을 수도 있다.  "어, 이거 진짜 랜덤 맞아? 왜 똑같은 결과가 나오지?" 그렇다. 컴퓨터 속에 존재.. 2024. 4. 24.