123DiceRoller는 브라우저에서 사실적인 3D 주사위를 던지는 무료 온라인 주사위 굴리기예요. 공정하고, 빠르고, 개인정보를 지키도록 만들었어요. 결과는 암호학적으로 안전한 난수 생성기가 정하고, 주사위는 실제 물리 법칙대로 던져지며, 여러분이나 여러분의 굴림에 관한 어떤 정보도 서버로 보내지 않아요.
굴림이 이루어지는 과정
- 숫자를 먼저 뽑아요. 주사위마다 브라우저의 Web Crypto API(
crypto.getRandomValues)가 32비트 난수를 하나씩 만들어요. 이 수를 “기각 샘플링”으로 면 하나에 대응시키는데, 낮은 면이 아주 조금이라도 더 잘 나오게 만드는 값은 버려요. 그래서 N면체 주사위의 모든 면은 정확히 N분의 1 확률로 나와요. - 던지기를 시뮬레이션해요. 강체 물리 엔진(cannon-es)이 중력, 마찰, 튕김, 주사위끼리의 충돌을 반영해 주사위를 테이블 위로 던져요. 화면에 보여 주기 전에 던지기 전체를 눈 깜짝할 사이에 계산해요.
- 뽑힌 숫자에 맞게 주사위를 돌려 놓아요. 주사위 모양은 모두 대칭이라서, 예를 들어 d20은 60가지 방법으로 회전해도 똑같아 보여요. 물리 엔진이 정한 윗면 자리에 뽑힌 숫자가 오도록 하는 회전 하나를 골라, 맨 첫 프레임부터 적용해요. 움직임은 진짜이고, 숫자는 이미 공정하게 정해져 있었던 거예요.
- 비스듬히 기댄 주사위는 다시 던져요. 주사위가 다른 주사위에 기댄 채 멈출 것 같으면, 실제 테이블에서 다시 굴리듯이 보이지 않는 곳에서 던지기를 다시 해요.
- 그림자, 반사, 그리고 부딪칠 때마다 타이밍을 맞춘 소리와 함께 던지기를 재생해요.
왜 물리 엔진이 숫자를 정하지 않나요?
시뮬레이션은 공정한 난수원이 아니기 때문이에요. 시작 위치, 시간 간격, 반올림 같은 작은 차이 때문에 어떤 면이 다른 면보다 더 자주 나올 수 있고, 그렇지 않다는 걸 아무도 증명할 수 없어요. 암호학적 난수 생성기는 예측할 수 없고 고르게 나오도록 설계되고 검증돼요. 둘을 분리하면 양쪽의 장점을 모두 얻을 수 있어요. 보기에도 소리로도 진짜 같은 던지기와, 믿을 수 있는 결과죠.
정확한 확률
모든 굴림에 표시되는 확률은 추측이 아니라 계산한 값이에요. 합계는 주사위를 하나씩 합성곱해서 구하고, 이점 같은 남기기·제외 굴림은 서로 다른 결과를 모두 세어서 구해요. 자세한 방법은 주사위 확률 계산기에서 설명해요.
사용한 기술
두 라이브러리 모두 외부 CDN이 아니라 이 사이트에서 직접 제공하므로, 페이지가 다른 곳에서 코드를 불러오는 일은 없어요.
123 패밀리의 일원
123DiceRoller는 123Calculator를 비롯해 가입 없이 쓸 수 있는 여러 무료 도구와 한 가족이에요. 질문이나 아이디어가 있거나 버그를 발견하셨나요? hello@123diceroller.com으로 이메일을 보내 주세요.
최종 업데이트: