정말 공대장에 따라 나오는 장비가 다를까요?

2006-03-28

오래 전 미국 한 GM의 말로 인해 아직도 논란이 많습니다.

GM의 말에 따르면 해당 인스턴스 던전에서 떨어지는 장비(아이템) 테이블은 공대장(인스턴스 던전 소유자) 캐릭터의 고유값과 진입 할 때 시각을 이용해서 만든 특정 시드값(seed)에 따라 결정된다는 것입니다.

위 내용은 지극히 당연한 이야기입니다. 장비 테이블을 만들려면 난수가 필요하고 난수를 만드는데는 시드값이 필요한데 보통은 이 시드값을 시각으로 만듭니다. 블리자드에서는 이 시드값에 좀 더 변화를 주기 위해 캐릭터 고유값까지 함께 이용한 것입니다.

문제는 컴퓨터가 쓰고 있는 난수값이란게 현실세계와는 달리 함수에 의해 만들어지는 일정한 규칙이 있는 놈이라는 점입니다.

예를 들자면, 1을 시드값으로 시작한 가상의 난수함수 f(x)는 10만번을 실행해도 0.1, 0.9, 0.3 식으로 시작합니다. 그러다가 결국 1로 돌아옵니다. 그 다음에는 다시 0.1, 0.9, 0.3 식으로 돌아갑니다.

또한 특정 시드값으로 하는 경우 절대 나오지 않는 숫자도 있습니다.

즉, 1을 시드값으로 시작 할 때는 0.5라는 값이 나오지만 2를 시드값으로 시작할 때는 난수값이 한바퀴 돌동안 0.5라는 값이 나오지 않습니다.

이렇게 컴퓨터에서 쓰는 난수라는 것이 불완전하기 때문에 난수가 제대로 필요한 곳에서는 수학이 아닌 물리적으로 난수를 만들어 주는 장치를 쓰기도 합니다.

자 이제 여기서 우리가 주목할 부분은 바로 시간입니다. 보통 컴퓨터 프로그래밍에서 난수 초기화를 할 때는 초단위의 값을 씁니다. 블리자드가 초단위의 값을 시드로 쓴다면 공대장의 고유값이 아이템 테이블이 미치는 영향은 아무 미미합니다. (초단위로 입장 시각이 같은 공격대는 없을 것입니다.)

하지만, 블리자드가 분 단위 또는 그 이상의 시간 간격을 시드값으로 반영한다면 공대장의 고유값이 아이템 테이블을 결정한다고 봐도 과언이 아닙니다. 왜냐하면 시드값이 같으면 같은 난수값이 순차적으로 나오기 때문입니다.

거기에 더해 하드웨어 없이 수학에 의존해서 만드는 난수라는 것 자체가 고른 값을 만들어내지 못하기 때문에 특정 값이 나오지 않거나 특정 값이 몰려서 나오는 현상은 어쩔 수 없는 것입니다.