d라이브러리









GIB
게임을 하다 보면 왜 매번 같은 아이템만 나오는지 의문이 들 때가 있다. 좋은 아이템을 갖고 싶어 급기야 돈을 쓰기도 한다. 그래도 나오지 않는다. 그러다 보면 시스템에 의문을 품게 된다. 애초에 내가 원하는 아이템은 없는 것 아닐까?

음악을 들을 때도 마찬가지다. 내 보관함에 있는 음악을 ‘랜덤 재생’했는데, 랜덤 재생할 때마다 같은 순서로만 재생되는 것처럼 느껴질 때가 있다. 분명히 랜덤 재생이라고 했는데 음악이 골고루 나오지 않는 것이다. 이거 정말 랜덤 재생 맞는 걸까?


랜덤을 결정하는 건 난수!

랜덤의 비밀을 알아내기 위해서는 먼저 ‘난수’가 무엇인지 알아야한다. 난수는 어떤 주기로 반복되지 않고, 특정한 규칙 없이 무작위로 나열돼 있는 수를 말한다. 난수는 예측이 불가능한 수다. 예를 들어 1, 3, 5, 7 …이라는 수열이 있다면 7 다음에 9가 나올 것이라고 예측할 수 있다. 반대로 난수는 지금까지 나온 수를 가지고 다음에 나올 수를 예측할 수 없다. 이런 난수를 이용해 랜덤, 무작위의 상황을 만드는 것이다.

난수는 물건을 만드는 상황에서도 사용한다. 한번에 보조배터리를 10만 개씩 생산하는 공장이 있다고 할 때 10만 개 모두를 가지고 불량품 테스트를 하지 않는다. 이 중에서 무작위로 수백 개만 뽑아서 불량품 여부를 확인한다. 이때 난수가 필요하다. 과학 실험에서도 마찬가지다. 시뮬레이션이 잘 작동하는지 확인하기 위해 난수를 이용한다.

설문조사에도 난수가 쓰인다. 한국인을 대상으로 조사할 때 5000만 명이 넘는 모든 인구를 대상으로 조사할 수 없다. 그래서 난수를 이용해 무작위로 일부분를 골라내 조사한다. 이렇게 난수는 게임이나 로또복권의 자동생성뿐 아니라 우리 주변 곳곳에서 이용되고 있다.


랜덤과 다른 셔플

랜덤과 많이 혼동하는 개념이 있다. 바로 ‘셔플’이다. 셔플의 개념은 카드놀이와 같다. 서로 다른 종류의 카드를 10장 섞은 뒤 카드를 하나씩 뽑는다. 잘 섞은 카드 10장을 하나씩 뽑을 때 어떤 카드가 나올지 알 수 없다. 예측할 수 없게 무작위로 뽑는 거라면 셔플은 랜덤과 어떻게 다를까? 차이는 중복이다. 둘 다 무작위로 수를 정하는 것은 같지만 랜덤과 다르게 셔플은 한 번 나왔던 수가 다시 나올 수 없다.

그래서 이 방법은 심리실험에서 순서를 정해야 하는 경우에 많이 사용한다. 월드컵에서 조 추첨을 하거나 로또 번호를 추첨하는 것도 비슷한 방법이다. 음악에서 랜덤 재생을 했을 때 사용하는 방식도 정확히는 셔플에 해당한다.

아무 수나 적어 놓은 난수표

난수가 필요할 때는 어떻게 만들까? 그때그때 아무렇게나 생각해서 쓸 수는 없는 노릇이다. 예전에는 무작위로 된 수열을 만들 수 있는 ‘난수표’를 만들어 두고 필요할 때 사용했다. 난수표는 규칙 없이 숫자를 나열해 적어놓은 것이다.

일반적으로 숫자를 2자리 또는 4자리씩 끊어 배열한다. 난수표에서 적당히 숫자 하나를 선택하고 그 숫자를 기준으로 가로, 세로, 또는 대각선 방향으로 읽어 내린다. 그러면 규칙을 알 수 없는 수가 연속으로 나온다.

난수표는 1914년 제1차 세계 대전 당시, 러시아군대가 처음으로 만들어서 사용했다. 암호로 쓰기 위해서였다. 전달하려는 말을 난수표에 있는 숫자암호로 바꿔 보안을 유지한 것이다.

1927년 영국의 통계학자 레오나르드 티펫은 난수표를 만들어 출판했다. 그 뒤부터 더 큰 규모의 난수표가 나오기 시작했다. 난수표가 클수록 더 예측불가능한 난수를 만들 수 있었다. 1939년에는 영국 통계학자 모리스 캔달과 바빙튼 스미스가 10만 개의 수로 이뤄진 난수표를 만들었다. 티펫이 만들었던 난수표보다 두 배 많은 수로 이뤄진 표였다.

난수표는 암호를 푸는 중요한 열쇠로 항상 가지고 다녀야 했다. 만약 잃어버린다면 정보가 노출될 위험에 처한다. 그래서 현재는 1회용 난수표를 사용한다. 1회용 난수표는 일회용 난수를 만들어 한번만 사용하고 쓴 수는 없애버린다.




주사위는 전통적인 난수발생기

난수표를 만드는 방법은 다양하다. 가장 간단하게 랜덤으로 수를 뽑는 방법은 주사위 던지기다. 0에
서 9까지 숫자가 두 번씩 쓰여 있는 정이십면체 주사위를 던져보자.

특정 숫자가 나오도록 속임수를 쓰지만 않는다면 주사위가 멈췄을 때 어떤 숫자가 하늘 위를 보고 있을지 아무도 모른다. 그리고 다시 주사위를 던진다. 처음 던졌던 수와 똑같이 나올 수도 있고, 새로운 수가 나올 수도 있다. 하지만 어떤 수가 나올지는 아무도 모른다. 그래서 주사위를 던지는 방법은 오래전부터 임의로 선택을 할 때 사용하던 고전적이고 대표적인 방법이다. 주사위를 던질 때마다 나온 숫자를 적어 놓으면 난수표가 된다.

룰렛을 돌려도 좋다. 균등하게 나뉜 룰렛을 돌리고, 돌릴 때마다 나오는 숫자를 기록하면 난수표를 만들 수 있다. 또한 원판이 돌아갈 때 빛을 비춰 보이는 숫자를 하나씩 기록하는 방법을 이용하기도 했다. 동전의 앞면과 뒷면을 각각 1과 0으로 두고 나오는 면의 수열을 나열해도 이진법 난수표를 만들 수 있다.

이런 물리적인 방법 외에 기존의 다른 표를 이용하는 수도 있다. 최초로 난수표를 출판한 티펫은 인구통계조사표에서 무작위로 뽑아낸 수를 이용했다. 또 다른 통계학자는 로그함수의 값을 정리해 놓은 로그표에서 무작위로 수를 골라서 난수표를 만들었다. 이런 방법은 전부 사람의 손길이 닿아야 하는 방법이다. 자동으로 난수를 만드는 기술이 등장한 것은 컴퓨터를 도입한 뒤부터였다.





▼관련기사를 계속 보시려면?

Intro. 난수
Part1. 난수, 넌 누구니?
Part 2. 난수의 컴퓨터 시대
Part 3. 완벽한 난수를 찾아서



참고자료 :  <;역사 속에 숨겨진 코드 암호 이야기>;

이 기사의 내용이 궁금하신가요?

기사 전문을 보시려면500(500원)이 필요합니다.

2016년 03월 수학동아 정보

  • 조혜인 기자
  • 도움

    김재완 고등과학원 계산과학부 교수
  • 도움

    이상호 이화여대 컴퓨터공학과 교수
  • 일러스트

    김대호

🎓️ 진로 추천

  • 수학
  • 컴퓨터공학
  • 통계학
이 기사를 읽은 분이 본
다른 인기기사는?