가이드
온라인 주사위 굴리개가 정말 무작위인가요?
최종 업데이트: 2026년 8월 24일
아무도 낯선 사람의 주사위 주머니를 자동으로 신뢰하지 않으며, 숫자가 "무작위로" 나타났다고 믿으라는 웹사이트도 같은 의심을 받아 마땅합니다. 굴림 버튼을 누를 때 브라우저 안에서 실제로 무슨 일이 일어나는지, 그리고 어떤 굴리개든 공정성을 직접 확인하는 방법을 설명합니다.
숫자를 생성하는 것은 정확히 무엇인가
이 굴리개 — 그리고 브라우저 기반 주사위 도구의 대다수 — 는 JavaScript에 내장된 Math.random() 함수를 사용합니다. 모든 현대 브라우저는 이를 잘 연구된 알고리즘(Chrome과 Node의 엔진 V8은 xorshift128+라는 것을 사용)으로 구현하며, 페이지가 로드될 때마다 내부 엔트로피에서 새로 시드해 감지 가능한 패턴이 없는 숫자 스트림을 생성합니다. d6을 굴리는 것은 그저 Math.floor(Math.random() * 6) + 1 — 그 스트림에서 다음 숫자를 가져와 6개 결과로 스케일하고 0~5 대신 1~6으로 옮기는 것입니다.
그 계산은 전적으로 귀하의 기기에서 일어납니다. 결과를 결정하는 서버 왕복도, 사이트가 결과를 밀 때 쓸 수 있는 계정 기록도, "로드"하거나 실패할 것도 없습니다 — 그래서 이 굴리개는 페이지가 로드된 뒤 오프라인에서도 계속 동작합니다.
"무작위" 대 "암호학적으로 안전함" — 그리고 왜 여기서는 그 구분이 거의 중요하지 않은가
Math.random()은 의사난수 생성기(PRNG)입니다. 내부적으로는 결정적이지만, 보안을 제외한 어떤 실용적 목적에서도 참 무작위성과 통계적으로 구별할 수 없습니다. 이는 crypto.getRandomValues()와 같은 부류의 생성기가 아닙니다. 후자는 암호화 키 생성 같은 것 — 순서를 예측할 수 있는 공격자가 실제 보안 보장을 깰 수 있는 경우 — 을 위해 브라우저가 예약해 둔 것입니다.
주사위 굴림에는 그 간극이 중요하지 않습니다. 무언가를 훔치기 위해 당신의 다음 굴림을 예측하려는 사람은 없습니다 — 공정한 게임에 중요한 유일한 속성은 균등 분포입니다: 여러 번 굴렸을 때 각 면이 똑같이 자주 나오는가? Math.random()은 이를 쉽게 만족하며, 모든 주요 브라우저의 구현은 바로 이런 종류의 통계적 편향에 대해 폭넓게 테스트되었습니다.
연속이 조작을 뜻하지 않는 이유
사람들이 굴리개를 불신하는 가장 흔한 이유는 코드가 아니라 불가능하게 느껴지는 불운의 연속입니다. d6에서 1이 세 번 연속 나올 확률은 대략 216분의 1입니다(직관이 시사하는 것보다 자주 일어나며, 특히 많은 플레이어가 하루에 여러 번 굴리면 더 그렇습니다). 독립적이고 동일하게 분포된 사건에는 기억이 없습니다: 주사위는 나쁜 굴림 뒤에 좋은 굴림을 "빚지지" 않으며, 특정 시간 척도에서 "평준화"되지도 않습니다. 이는 주사위 확률 가이드에서 더 깊이 다루는 것과 같은 도박사의 오류이며, 화면에도 물리 테이블에도 정확히 같은 방식으로 적용됩니다.
직접 확인하기: 5분 공정성 테스트
공정성 주장을 믿을 필요는 없습니다 — 단일 주사위 굴리개는 기본 통계 테스트로 검증할 만큼 단순합니다:
- 단일 주사위(예: d6)를 아주 많이 굴리세요 — 추세를 보려면 100번이면 충분하고, 600번 이상이면 더 깨끗한 그림이 나옵니다.
- 각 면(1부터 6)이 몇 번 나왔는지 셉니다.
- 각 면의 횟수를 기대 횟수와 비교합니다:
총 굴림 수 ÷ 6.
공정한 주사위라면 표본이 커질수록 횟수가 정상적인 통계 잡음과 함께 기댓값 근처에 모입니다 — 어떤 면도 크게 과대 또는 과소 대표되어서는 안 됩니다. "크게"를 엄밀히 하고 싶다면 카이제곱 적합도 검정이 공식적인 답을 줍니다: 여섯 면 전체에 걸쳐 (관측 − 기대)² ÷ 기대를 합하고, 자유도 5의 카이제곱 표와 비교하세요. 정상 범위 안(95% 신뢰 임계값 기준 대략 11 미만)에 드는 결과는 공정한 주사위와 일치하며, 그보다 훨씬 높은 결과는 조사할 가치가 있는 실제 편향을 시사합니다.
이 테스트는 디지털이든 물리든 어떤 굴리개에도 통합니다 — 통계학자가 물리 카지노 주사위에 제조상 편향이 있는지 확인할 때 쓰는 것과 같은 방법입니다.
무엇이 실제로 굴리개를 불공정하게 만들까
조작된 디지털 굴리개는 상상하기 어렵지 않으며, 올바른 확인으로 배제하기 쉬울 뿐입니다:
- 편향된 범위 계산. 무작위 부동소수점을 정수 범위로 순진하게 스케일하면 잘못했을 때 특정 숫자를 살짝 유리하게 만들 수 있습니다("off-by-one" 또는 모듈로 편향 버그). 이것을 포함해 잘 테스트된 구현은 전체 범위에서 올바르게 스케일하고 내림함으로써 이를 피합니다.
- 서버 측 조작. 굴림에 서버 호출이 필요하고 서버가 결과를 결정한다면, 실행되는 코드를 독립적으로 검증할 방법이 없습니다 — 소프트웨어만으로는 고칠 수 없는 신뢰 문제입니다. 이 굴리개의 결과는 브라우저 개발자 도구로 검사할 수 있는 코드에서, 당신 자신의 브라우저에서 결정됩니다.
- "흥미로운" 결과로의 숨은 가중치. 일부 게임 앱은 참여를 위해 결과를 의도적으로 편향시킵니다. 계정도, 수익화된 결과도, 어떤 결과를 유리하게 할 이유도 없는 주사위 굴리개에는 그럴 유인이 없습니다 — 그리고 역시, 그냥 믿는 대신 위 테스트로 검증할 수 있습니다.
짧게 말하면
이 사이트의 모든 굴림은 표준적이고 균등 분포인 의사난수 생성기를 사용해 브라우저에서 로컬로 실행됩니다 — 대부분의 주사위 굴림 소프트웨어, 비디오 게임, 셔플 도구가 쓰는 것과 같은 부류의 RNG입니다. 암호학적으로 안전하지 않으며, 그럴 필요도 없습니다: 주사위 굴림에 필요한 유일한 속성은 각 면에 동일한 확률이고, 그것이 바로 균등 PRNG가 제공하는 것입니다. 직접 보고 싶다면 주사위 굴리개에서 한 묶음 굴리고 위 테스트를 돌려 보세요.