ToolActToolAct

동전 던지기

온라인으로 동전을 던져 랜덤하게 앞면 또는 뒷면 확인

HEADS
TAILS

동전 던지기 도구란?

동전 던지기 도구는 앞면 또는 뒷면이라는 두 가지 결과만 있는 무작위 선택을 시뮬레이션합니다. 둘 중 어느 쪽도 받아들일 수 있는 가벼운 결정, 예를 들어 누가 먼저 시작할지, 어떤 초안을 먼저 검토할지, 어느 길로 갈지, 게임에서 선공을 정할 때 유용합니다. 온라인 도구의 장점은 바로 실행할 수 있고 최근 결과, 연속 기록, 앞면과 뒷면 비율을 확인할 수 있다는 점입니다. 공정한 동전은 시행 횟수가 많아질수록 50/50에 가까워지지만, 적은 횟수에서는 한쪽이 연속으로 나오는 것이 정상적인 확률 현상입니다. 일상 선택, 확률 수업, 가벼운 게임에는 적합하지만 공식 추첨, 상품 지급, 법적 판단처럼 감사가 필요한 상황에는 적합하지 않습니다.

사용 방법

사용 방법

  1. '동전 던지기' 버튼을 클릭하여 시작하세요
  2. 동전 던지기 애니메이션을 보고 결과를 기다리세요
  3. 결과를 확인하세요 (앞면 또는 뒷면)
  4. 기록에서 앞면과 뒷면의 횟수와 비율이 자동으로 추적됩니다
  5. '기록 초기화'를 클릭하여 모든 통계를 초기화합니다

무작위성 참고사항

  • 결과는 캐주얼한 결정에만 사용하세요. 브라우저의 무작위성은 재미로는 적합하지만, 도박, 보안, 공식 추첨에는 적합하지 않습니다.
  • 여러 사람이 결과에 의존하는 경우, 시작 전에 기록이나 반복 던지기 여부에 대해 합의하세요.

활용 사례

눈으로 보이는 두 가지 선택 결정동전을 클릭하거나 탭하면 애니메이션과 함께 앞면 또는 뒷면 결과가 나옵니다. 수업 순서, 회의 순서, 게임 턴, 양쪽 모두 괜찮은 가벼운 결정 상황에 적합합니다. 별도의 가입이나 앱 설치 없이 브라우저에서 바로 실행할 수 있습니다.
연속 결과가 균형 잡혔는지 추적던지기 기록을 유지하고 앞면과 뒷면 횟수, 비율, 현재 및 최장 연속 기록을 표시하여 반복 던지기를 단일 무작위 호출보다 투명하게 보여줍니다. 한쪽이 잠깐 연속 나오는 것은 정상적인 분산 현상이지 동전의 문제가 아니므로, 누적 카운터가 객관적인 판단 근거가 됩니다. 연속 필드는 매번 갱신되어 한쪽 연속이 계속되는지 50/50로 되돌아가는지 쉽게 파악할 수 있습니다.
결정 맥락이 바뀔 때 세션 초기화새 게임, 새 그룹, 새 결정 전에 기록을 지우면 이전 결과가 표시 비율과 연속 기록에 영향을 미치지 않습니다. 브라우저는 Math.random이 아닌 crypto.getRandomValues를 사용하므로 각 던지기 결과가 공정한 수업 추첨이나 소규모 대회에 적합합니다.
수업 시연에서 연속 실험 진행학생들 앞에서 30번 또는 50번 던지면서 앞면/뒷면 비율이 50/50에 수렴하는 것을 관찰하세요. 실시간 연속 카운터를 활용하면 한쪽이 잠깐 연속 나오는 것이 정상적인 분산이지 편향이 아님을 설명할 수 있습니다. 실제 편향된 동전을 통계적으로 검증하려면 약 만 번의 시행이 필요하지만, 수업에서 50번 정도의 표본이면 개념 교육에는 충분합니다.
던지기 기록을 감사 추적으로 활용소규모 대회, 추첨, 팀 선택 중에 화면에 표시되는 타임스탬프와 결과 로그를 유지하면 참여자가 시퀀스와 누적 카운트를 확인할 수 있어 나중에 분쟁을 방지합니다. 감사 로그는 해당 탭에만 존재하므로 페이지를 닫기 전에 표시 기록을 내보내는 것이 가장 간단한 보관 방법이며, 누적 결과의 스크린샷만으로도 친목 목적의 결정에는 충분한 증빙이 됩니다.

기술 원리

각 던지기마다 crypto.getRandomValues(new Uint8Array(1))에서 한 바이트를 가져와 하위 비트를 검사합니다: 0이면 뒷면, 1이면 앞면으로 매핑됩니다. Web Crypto API는 WHATWG Web Cryptography 명세에 따라 암호학적으로 안전한 의사 난수 생성기(CSPRNG)에서 바이트를 공급하도록 요구하며, 일반적으로 OS 엔트로피 풀(Linux의 getrandom, Windows의 CryptGenRandom/BCryptGenRandom, macOS/iOS의 SecRandomCopyBytes)을 기반으로 합니다. Math.random()은 명시적으로 비암호학적으로 정의되며, 지정되지 않은 알고리즘(V8: xorshift128+)에서 53비트 double을 반환하고 관찰 가능한 편향과 몇 개의 샘플 출력으로 예측이 가능하므로, 이 도구에서는 던지기 결정에 사용하지 않습니다. 강대수의 법칙에 따르면 경험적 앞면 비율은 시행 횟수 N이 증가함에 따라 0.5로 수렴하지만, 유한한 N에 대해 이항분포 Bin(N, 0.5)의 분산은 N x 0.25이고 표준편차는 0.5 x sqrt(N)입니다. N=100일 때 95% 신뢰 구간은 50 +/- 10이므로, 관측된 60/40 분할은 정상 분산 범위 내에 있으며 편향된 생성기의 증거가 아닙니다. 연속 기록은 기하분포를 따릅니다: N번 던지기에서 적어도 k번 연속 앞면이 나올 확률은 대략 1 - (1 - 0.5^k)^(N-k+1)이며, 100번 던지기에서 6연속이 나올 확률은 약 17%로 역시 정상적이며 의심스럽지 않습니다. 동전 애니메이션은 requestAnimationFrame으로 구동되어 브라우저 리페인트 주기(일반적으로 60Hz, 프레임당 16.67ms, 120Hz 디스플레이에서는 더 높음)와 동기화되며, 기록은 localStorage에 저장되어 같은 출처 내에서 페이지 새로 고침 후에도 연속 카운터가 유지됩니다. 실제 편향된 물리적 동전에 대한 통계적으로 유의미한 검정은 95% 신뢰도로 1% 편향을 감지하려면 약 10,000번의 시행이 필요합니다. 이 도구의 CSPRNG 소스는 디지털 던지기에 대해 그 문제를 없앱니다. 고위험 추첨이나 법적 구속력이 있는 추첨의 경우 감사 가능한 서드파티 RNG 서비스나 인증된 하드웨어 RNG를 사용하는 것이 좋습니다. 브라우저 측 무작위성은 외부적으로 검증 가능한 추적을 남기지 않기 때문입니다.

  • crypto.getRandomValues는 CSPRNG에서 Uint8Array를 채우며, Math.random은 암호학적이지 않고 예측 가능합니다.
  • 결정 규칙: byte & 1, 비트 0을 뒷면, 비트 1을 앞면으로 매핑(단일 비트에서 균등 50/50).
  • Bin(N, 0.5) 분산은 0.25 x N이며, 100번 던지기에서 60/40 분할은 +/-2 시그마 정상 분산 범위 내입니다.
  • 95% 신뢰도로 1% 편향된 물리적 동전을 감지하려면 약 10,000번의 시행이 필요하며, 교실 표본을 훨씬 초과합니다.
  • 애니메이션은 디스플레이 리프레시 주기(일반적으로 프레임당 16.67ms)의 requestAnimationFrame으로 구동됩니다.
  • 연속 카운터와 기록은 window.localStorage를 통해 영속화되며 이 출처에만 한정됩니다.
  • 브라우저 측 무작위성은 외부적으로 감사 가능한 추적을 남기지 않으므로, 법적 추첨에는 인증된 RNG 서비스를 사용하세요.

예시

10회 던지기 시퀀스 (단일 세션)

Flip #1  -> 앞면
Flip #2  -> 뒷면
Flip #3  -> 뒷면
Flip #4  -> 앞면
Flip #5  -> 앞면
Flip #6  -> 앞면 (연속: 3)
Flip #7  -> 뒷면
Flip #8  -> 앞면
Flip #9  -> 뒷면
Flip #10 -> 뒷면
합계: 앞면 5 (50%), 뒷면 5 (50%)

100회 던지기 통계 (일반적인 결과)

총 횟수          : 100
앞면 횟수        : 52  (52%)
뒷면 횟수        : 48  (48%)
앞면 최장 연속   : 6
뒷면 최장 연속   : 5
관찰             : 시행 횟수가 적으면 정확한 50/50 결과는 드물게 나타남.

3판 2선승 - 식사비 결정

A는 앞면, B는 뒷면 선택.
1라운드: 앞면 -> A 승
2라운드: 뒷면 -> B 승
3라운드: 앞면 -> A 승 (최종: A 2 - B 1)
B가 식사비 부담.

수업용 확률 시연 (50회 던지기)

10회 후 : 앞 7  뒤 3   (70% / 30%)
25회 후 : 앞 14 뒤 11  (56% / 44%)
50회 후 : 앞 26 뒤 24  (52% / 48%)
교훈: 표본이 커질수록 비율은 50/50에 수렴함.

자주 묻는 질문

동전 던지기는 정말 무작위인가요?

네. 이 페이지는 Web Crypto API의 crypto.getRandomValues를 사용하며, 이는 운영체제의 암호학적 난수 풀에서 시드를 가져옵니다. 각 던지기는 독립적이며 이전 결과가 다음 결과에 영향을 주지 않습니다. 페이지를 새로고침해도 무작위성은 초기화되지 않습니다.

왜 앞면이 5번 연속으로 나왔을까요?

무작위라는 것은 '균등하게 번갈아 나오는 것'을 의미하지 않습니다. 같은 면이 5번 연속 나올 확률은 1/16, 약 6.3%로 흔하지는 않지만 드물지도 않습니다. 진짜 무작위 수열에는 이런 긴 연속이 자연스럽게 나타나며, 오히려 완벽하게 번갈아 나오는 수열이야말로 무작위가 아니라 인간의 편향을 보여주는 신호입니다.

매번 정확히 50:50 확률인가요?

네, 정확히 그렇습니다. 실제 동전 던지기에는 위로 향한 면이 위로 떨어질 확률이 약간 더 높은 미세한 물리적 편향이 있지만, 컴퓨터 시뮬레이터에는 그런 편향이 없습니다. 양쪽 모두 정확히 50.000…%이므로 공정한 결정에 사용할 수 있습니다.

단체로 결정할 때 결과가 공정한가요?

수학적으로는 그렇습니다. 사회적으로는 동전을 던질지 말지를 정하는 단계와 던진 후 다시 협상하는 단계가 던지기 자체보다 더 중요합니다. 던지기 전에 결과를 따르겠다고 미리 합의하세요.

여러 번 던진 결과의 통계도 볼 수 있나요?

이 페이지는 한 번에 한 개의 동전을 던지며, 세션 동안 던지기 기록, 앞면/뒷면 횟수, 백분율, 현재 연속 횟수, 최장 연속 횟수를 추적합니다. 통계는 모든 던지기를 한눈에 보여줍니다. 탭을 닫거나 '기록 지우기'를 클릭하면 기록이 초기화됩니다.

던진 결과가 저장되나요?

최근 던지기 기록은 세션 동안 브라우저 탭에 보관됩니다. 일반적으로 탭을 닫으면 사라지지만, 일부 빌드는 localStorage에 저장하기도 합니다. 어떠한 데이터도 외부로 업로드되거나 다른 사람과 공유되지 않습니다.

법적 효력이 있는 결정에도 사용해도 되나요?

점심값 내기나 순서 정하기 같은 가벼운 선택에는 괜찮습니다. 양육권, 계약, 자산 분할처럼 법적 효력이 있는 결정에는 증인이 있는 문서화된 물리적 절차가 필요합니다. 웹 도구로 한 결정은 사후에 감사할 수 없기 때문입니다.