난수 · LESSON 4
시드 — 컴퓨터 난수의 출발점
컴퓨터가 난수를 만들려면 꼭 필요한 '출발 숫자'가 있어요. 그게 바로시드예요.
개념
왜 시드가 필요할까?
컴퓨터는 사실 함수(계산기)예요. 같은 걸 넣으면 항상 같은 게 나와요. 마음대로 아무 숫자나 '뿅' 만들지 못해요.
f(시드) = 난수시드(출발 숫자)를 넣어야 비로소 난수가 나와요. 시드가 없으면 넣을 게 없어 만들 수 없어요.
같은 시드 → 항상 같은 난수예요. 그래서 나중에 누구나 똑같이 다시 계산해 확인할 수 있어요.
실험
시드를 바꿔가며 난수를 만들어 봐
시드를 넣고 '난수 만들기'를 누를 때마다 아래 표가 한 줄씩 늘어나요. 여러 시드를 넣어보며 누가 당첨되는지 살펴봐요.
응모자를 A · B · C · D · E 5명이 있다고 가정해요. 당첨자를 뽑기 위해 난수를 5로 나눈 나머지로 당첨자를 정해요 (0→A, 1→B, 2→C, 3→D, 4→E). 왜 '나머지'를 쓰는지는 알고리즘 '난수로 당첨자 뽑기'에서 배울 수 있어요.
시드
위에 시드를 넣고 버튼을 눌러보세요.
퀴즈
위 실험에서 'D'가 당첨되려면 시드를 뭘 넣어야 할까?
같은 시드는 항상 같은 난수를 만들어요. 그래서 'D'가 당첨되는 시드도 딱 정해져 있죠. 아래에 시드를 넣고 확인을 눌러 직접 찾아봐도 되고, 자동으로 찾기 버튼을 눌러도 돼요.
시드
허점
이건 불공정해요
시드를 마음대로 고를 수 있으면, 추첨자가 원하는 사람(D)을 골라 당첨시킬 수 있어요. 그러면 이건 공정한 추첨이 아니죠.
해결
그래서 DRAND를 써요
DRAND 난수는 전 세계가 함께 정해서 아무도 못 골라요. 그 난수로 만든 추첨 시드도 마찬가지라, 추첨자가 D를 일부러 뽑을 수 없어요.
DRAND가 무엇이고 어떻게 받아오는지는 다음 'DRAND 받아보기'에서 자세히 배울 수 있어요.
정리 — 컴퓨터 난수는 시드가 꼭 필요해요(함수니까!). 그런데 추첨자가 시드를 고르면 원하는 사람을 당첨시킬 수 있어 불공정하죠. 그래서 아무도 못 고르는 DRAND 시드를 써서 공정하게 만들어요.
