예/아니오 랜덤 생성기 쉽게 이해하기 — 개념과 원리
이 도구는 입력한 질문에 무작위로 '예' 또는 '아니오'를, 또는 '예·아니오·글쎄요' 가운데 하나를 답합니다. 공정한 동전 던지기처럼 각 답이 나올 확률은 정확히 같습니다. 뭘 먹을지, 어떤 영화를 볼지처럼 사소한 고민을 끝낼 때 쓰십시오.
계산 방법
각 답의 확률 = 100% ÷ 가능한 답의 수
- 예/아니오는 2분의 1, 즉 50%이고, 예/아니오/글쎄요는 3분의 1, 약 33.3%입니다.
- 브라우저의 암호학적 난수 생성기(crypto.getRandomValues)에서 정수 하나를 뽑습니다.
- 기각 표본추출: 범위 맨 위의 나누어떨어지지 않는 부분에 걸린 수는 버리고 다시 뽑은 뒤, 2나 3으로 나눈 나머지로 답을 정합니다.
- 질문 내용은 읽거나 분석하지 않습니다. 입력을 바꾸기 전에는 같은 답이 유지되며, 추첨 번호를 바꾸면 다시 묻습니다.
원리
공정한 무작위 선택에는 예측할 수 없는 원천과 치우침 없는 대응 방법이 필요합니다. 브라우저의 암호학적 난수 생성기는 예측할 수 없도록 설계되어 있습니다. 치우침은 대응 단계에서 생길 수 있습니다. 32비트 수는 4,294,967,296가지라 3으로 나누어떨어지지 않으므로, 나머지만 쓰면 어떤 답이 아주 조금 더 자주 나옵니다. 그 불균형을 만드는 범위 맨 위의 몇몇 값을 버리면 치우침이 완전히 사라집니다.
예제 풀이
기본값: 질문 "Should I order pizza tonight?", 예/아니오, 추첨 번호 1.
- 가능한 답이 2개이므로 각 확률은 100 ÷ 2 = 50%입니다.
- 난수를 하나 뽑아 범위 안에 들어가는 2의 최대 배수보다 작을 때만 씁니다. 답이 2개면 모든 값이 해당합니다.
- 2로 나눈 나머지가 0이면 예, 1이면 아니오입니다.
- 이 페이지를 확인할 때 추첨 번호 1에서 Yes ✓가 나왔습니다. 매번 무작위이므로 화면의 답은 다를 수 있습니다.
결과 해석
답은 질문에 대해 아무 정보도 주지 않습니다. 그래도 쓸모는 있습니다. 결과를 보고 안도하는지 실망하는지를 느끼면 자신이 정말 원하던 것이 무엇인지 알게 되는 경우가 많습니다. 원하는 답이 나올 때까지 계속 다시 묻는다면 이미 마음이 정해졌다는 신호입니다.
흔한 실수
- 답을 조언이나 예언으로 받아들이는 경우
- 답이 번갈아 나올 것이라 기대하는 경우(매번 독립입니다)
- 예가 세 번 연속 나왔으니 다음은 아니오일 것이라 생각하는 경우
- 실제 결과가 따르는 결정에 쓰는 경우
자주 묻는 질문
정말 무작위인가요?
예측할 수 없도록 설계된 브라우저의 암호학적 난수 생성기와 치우침 없는 대응 방법을 씁니다.
다시 눌러도 답이 그대로인 이유는?
입력이 바뀌기 전에는 답을 고정합니다. 추첨 번호를 바꾸면 다시 뽑습니다.
예가 세 번 연속 나올 확률은?
8분의 1, 즉 12.5%입니다.
출처: W3C Web Cryptography API, crypto.getRandomValues · D. E. Knuth, The Art of Computer Programming, Vol. 2, §3.4.1