Marble Race Draw

구슬 레이스 추첨

참가자 이름을 넣으면 이름표를 단 구슬이 장애물 판을 굴러 내려갑니다. 결승선에 먼저 들어온 구슬, 또는 가장 늦게 들어온 구슬의 이름이 당첨됩니다. 구슬은 최대 100개이고, 출발 자리는 시작하는 순간 무작위로 정해집니다.

구슬 7개 · 이름 6개

0.0초구슬 7개

출발 자리는 시작을 누르는 순간 무작위로 정해집니다

구슬 7/100

이름*3처럼 쓰면 구슬이 3개가 되어 당첨 기회가 3배가 됩니다. 같은 이름을 여러 줄 써도 합쳐서 셉니다. 구슬은 모두 합쳐 100개, 이름은 20자까지.

당첨 방식

당첨 인원

1명

결승선에 가장 먼저 들어온 구슬의 이름이 당첨됩니다.

참가자 목록과 설정은 이 브라우저에만 저장되고 서버로 보내지 않습니다.

목차▾
  1. 1.구슬 레이스 추첨이란
  2. 2.사용법
  3. 3.당첨 방식과 가중치
  4. 4.공정성: 결과는 어떻게 정해지나
  5. 5.판 구성과 물리 계산
  6. 6.끼는 구슬과 시간 제한
  7. 7.방송·모임에서 쓰기
  8. 8.자주 묻는 질문

구슬 레이스 추첨이란

구슬 레이스 추첨은 참가자마다 구슬을 하나씩 정해 핀과 벽, 돌아가는 막대가 있는 세로로 긴 판에 함께 굴린 뒤, 결승선에 들어온 순서로 당첨자를 정하는 추첨 방식입니다. 원판의 바늘이 멈춘 칸을 보는 룰렛 돌리기와 달리, 구슬들이 앞서거니 뒤서거니 하는 과정을 여럿이 함께 지켜볼 수 있어 결과가 나오기까지의 긴장감이 큽니다.

웹에서 이 방식으로 널리 알려진 것은 개발자 lazygyu가 2022년 GitHub에 공개한 웹 앱 「마블 룰렛(Marble Roulette)」입니다. 공개된 소스 코드(MIT 라이선스)에 따르면 이 앱은 물리 엔진 box2d-wasm으로 구슬을 움직이고, 저장소에는 "마블 룰렛" 명칭이 개발자의 상표로 출원 중이라는 고지가 있습니다. 이 페이지의 도구는 그 앱과 관계없이 모아모앙이 판 설계와 물리 계산을 새로 만든 것이라 판 모양과 구슬 움직임이 다릅니다.

못이 박힌 판에 공을 떨어뜨리는 장치 자체는 오래되었습니다. 영국의 프랜시스 골턴은 1874년 왕립연구소 강연에서 공이 핀에 부딪혀 좌우로 갈리며 종 모양 분포로 쌓이는 장치(골턴 보드)를 선보였고, 1889년 책 『Natural Inheritance』에도 실었습니다. 미국 TV 퀴즈쇼 「The Price Is Right」의 게임 플링코(Plinko)도 커다란 핀 판에 칩(chip)을 떨어뜨려 떨어진 칸으로 상금을 정하며, 1983년 1월 3일 처음 방송되었습니다.

사용법

  1. 참가자 칸에 이름을 한 줄에 하나씩 적습니다. 엑셀에서 이름 열을 복사해 붙여 넣어도 되고, 쉼표나 탭으로 나뉜 목록도 나눠서 넣습니다. 이름은 20자까지입니다.
  2. 당첨 기회를 늘릴 이름은 이름*3처럼 구슬 개수를 붙입니다. 같은 이름을 여러 줄 적어도 합쳐서 셉니다. 구슬은 모두 합쳐 100개까지입니다.
  3. 당첨 방식(먼저 도착 / 마지막 도착)과 당첨 인원을 정합니다. 아래에 지금 규칙이 한 줄로 나옵니다.
  4. 구슬 굴리기를 누릅니다(판이 보일 때는 스페이스바도 됩니다). 출발 자리가 무작위로 섞이고 구슬이 내려가기 시작합니다. 카메라는 선두(마지막 도착 방식은 꼴찌) 구슬을 따라갑니다.
  5. 당첨이 정해지면 판 위에 결과가 크게 나옵니다. "닫고 계속 보기"로 나머지 구슬이 들어오는 것을 끝까지 볼 수 있고, 도착 순위 목록에 구슬마다 들어온 순서와 시간이 남습니다.

판 위쪽의 가는 막대는 구슬 전체의 진행 상황입니다. 왼쪽이 출발, 오른쪽 끝이 결승선이고, 점 하나가 구슬 하나입니다. 구슬이 40개를 넘으면 판이 복잡해지지 않게 결승선에 가까운 구슬 몇 개와 카메라가 따라가는 구슬에만 이름표를 붙입니다. 내 구슬은 색으로 찾으면 됩니다(같은 이름의 구슬은 같은 색).

당첨 방식과 가중치

방식당첨되는 이름결과가 정해지는 때
먼저 도착이름마다 가장 빠른 구슬로 줄 세워, 먼저 들어온 이름 N개서로 다른 이름 N개가 들어온 순간
마지막 도착이름마다 가장 늦은 구슬로 줄 세워, 가장 늦게 들어온 이름 N개모든 구슬이 들어온 뒤

당첨은 서로 다른 이름으로 셉니다. 같은 이름의 구슬이 1등과 2등으로 들어와도 그 이름은 한 번만 당첨되고, 다음에 들어온 다른 이름이 2위가 됩니다. 당첨 인원을 이름 수만큼 늘리면 모든 이름에 순서가 매겨져 발표 순서나 차례를 정할 때 쓸 수 있습니다.

가중치는 구슬 개수입니다. 구슬은 모두 같은 크기·같은 무게이고 출발 자리가 무작위라, 어느 구슬이 몇 등을 할지는 구슬마다 같은 확률입니다. 그래서 한 명을 뽑을 때 당첨 확률은 그 이름의 구슬 수 ÷ 전체 구슬 수입니다. 가람*3과 나래 하나면 먼저 도착이든 마지막 도착이든 가람이 뽑힐 확률은 3/4입니다. 여러 명을 뽑을 때도 구슬이 많은 이름일수록 당첨될 가능성이 커집니다. 개발 중에 구슬 3개 이름과 1개 이름으로 400번 굴려 보니 3개 쪽이 먼저 도착 방식에서 315번(78.8%), 마지막 도착 방식에서 298번(74.5%) 뽑혀 기대값 75%에 가까웠습니다.

공정성: 결과는 어떻게 정해지나

  • 시작하는 순간 정해지는 시드: 구슬 굴리기를 누르면 브라우저의 암호학적 난수(crypto.getRandomValues)로 32비트 수 하나를 만듭니다. 이 수로 구슬 105곳의 출발 자리 가운데 어느 자리에 어느 구슬을 놓을지 섞고, 자리마다 작은 위치·속도 흔들림을 줍니다. 낀 구슬을 튕기는 방향도 이 수에서 나옵니다.
  • 그 뒤는 정해진 계산: 물리 계산은 120분의 1초 간격으로 고정되어 있어, 같은 참가자와 같은 시드면 같은 브라우저에서 몇 번을 돌려도 같은 결과가 나옵니다. 화면이 빠르든 느리든, 2배속이든 결과는 같습니다.
  • 조작 기능이 없음: 진행 중에 특정 구슬을 밀거나 멈추는 버튼, 이름별 유리한 자리, 결과를 미리 정하는 설정이 없습니다. 판의 어느 자리가 조금 유리하더라도 자리가 무작위로 배정되므로 모든 구슬에 같은 조건입니다.
  • 브라우저 안에서만: 이름과 결과는 서버로 보내지 않고, 계산은 모두 이 기기에서 이뤄집니다.

결과가 먼저 정해지고 원판이 그 칸에 멈추도록 돌아가는 룰렛과 달리, 이 도구는 결과를 미리 뽑아 두지 않습니다. 시드가 정해진 순간 결과도 정해지지만, 그 결과는 물리 계산을 끝까지 해 봐야 알 수 있습니다. 같은 무작위 추첨이라도 한 줄씩 짝을 지어 주는 사다리 타기나 여러 모둠으로 나누는 팀 나누기가 더 맞는 자리도 있습니다.

판 구성과 물리 계산

판은 너비 400 × 높이 3,700(세로가 가로의 약 9배)로, 구슬 지름 16에 맞춰 모아모앙이 직접 설계했습니다. 위에서부터 다음 구간을 지납니다.

구간내용
핀 밭엇갈린 핀 16줄 사이로 구슬이 이리저리 튕기며 흩어집니다. 가운데에 큰 범퍼 3개.
지그재그약 15° 기울어진 비탈 4개를 번갈아 굴러 내려갑니다.
풍차팔 4개짜리 풍차 4대가 서로 반대로 돌며 구슬을 쳐 냅니다.
깔때기좁아지는 깔때기 아래에서 휘젓개가 돌아 구슬이 뭉쳐 막히지 않게 합니다.
촘촘한 핀더 촘촘한 핀 14줄과 범퍼 2개.
시소축 양쪽으로 긴 막대 3개가 천천히 돕니다.
결승두 번째 깔때기와 휘젓개를 지나 결승 통로의 체크무늬 선을 넘으면 도착입니다.

물리 계산은 외부 엔진 없이 직접 만들었고 다음 규칙을 따릅니다.

  • 고정 간격: 120분의 1초마다 한 번, 그 안에서 두 번 나눠 계산합니다. 화면은 흐른 시간만큼 계산을 몰아서 돌린 뒤 그립니다.
  • 충돌: 구슬끼리, 구슬과 핀·벽·회전 막대가 부딪히면 부딪힌 방향으로 튕겨 내고(반발), 미끄러지는 방향의 속도는 마찰로 줄입니다. 돌아가는 막대는 접점의 속도만큼 구슬을 쳐 냅니다.
  • 벽 뚫림 방지: 한 번 계산하는 동안 구슬이 반지름보다 멀리 가지 못하게 속도 상한을 두어 구슬이 벽을 건너뛰지 않습니다. 구슬 100개가 쌓여 눌러도 벽 밖으로 밀려나지 않는지 시험했습니다.
  • 에너지: 반발 계수가 1보다 작고 공기 저항이 조금 있어, 부딪힐수록 에너지가 줄어듭니다. 구슬이 저절로 빨라지는 일은 없고, 회전 막대에 맞을 때만 힘을 얻습니다.

개발 중 시험에서는 구슬 6~100개 모두 첫 구슬이 대략 12~21초, 마지막 구슬이 24~32초 사이에 들어왔습니다. 시간은 구슬 수와 출발 자리에 따라 달라집니다.

끼는 구슬과 시간 제한

판은 평평한 바닥을 두지 않고, 지나가야 하는 틈은 구슬 지름보다 넉넉하게, 막아야 하는 틈은 확실히 좁게 만들어 구슬이 잘 끼지 않게 했습니다. 그래도 구슬이 서로 받치며 멈추는 경우를 위해 다음 규칙을 둡니다.

  1. 구슬이 3초 넘게 지금까지 내려간 가장 낮은 위치보다 더 내려가지 못하면 낀 것으로 보고, 위쪽 반원 안의 무작위 방향(시드에서 나온 방향)으로 한 번 튕겨 줍니다. 그 뒤에도 못 내려가면 3초마다 반복합니다.
  2. 시작 후 2분이 지나면 남은 구슬은 그 순간 결승선에 가까운(더 아래에 있는) 순서로 순위를 매기고 경기를 끝냅니다. 높이가 완전히 같으면 구슬 번호(참가자 목록 순서)가 앞선 쪽이 먼저입니다. 도착 순위 목록에는 "시간 제한"으로 표시됩니다.
  3. 같은 계산 단계에 결승선을 함께 넘은 구슬은 더 멀리 나간(먼저 넘은) 구슬이 앞 순위입니다.

이 규칙도 사람의 조작 없이 자동으로 적용되므로 결과는 여전히 시작할 때의 시드로 정해집니다. 개발 중 시험한 경기 80번(구슬 6·30·100개)에서는 시간 제한까지 간 구슬이 하나도 없었습니다.

방송·모임에서 쓰기

  • 전체 화면: 판과 결과만 화면 가득 커져 교실 TV나 방송 화면에 띄우기 좋습니다. 당첨 결과도 큰 글씨로 나옵니다.
  • 카메라: 먼저 도착 방식은 선두, 마지막 도착 방식은 꼴찌 구슬을 따라갑니다. 진행 중에 버튼으로 바꿀 수 있습니다.
  • 빠르게 ×2: 참가자가 많아 오래 걸릴 때 두 배 빠르게 봅니다. 결과는 보통 속도와 같습니다.
  • 시청자 추첨: 참여 댓글의 닉네임을 복사해 붙여 넣으면 한 줄에 하나씩 들어갑니다. 같은 닉네임이 여러 번 있으면 그만큼 구슬이 늘어나므로, 한 사람당 한 번만 넣으려면 중복을 지운 뒤 붙여 넣습니다.
  • 결과 남기기: 도착 순위 목록에 모든 구슬의 순서와 시간이 나오므로, 화면을 녹화하거나 목록을 캡처해 두면 나중에 확인할 수 있습니다.

자주 묻는 질문

결과는 공정한가요? 조작할 수 있나요?▾

시작을 누르는 순간 브라우저의 암호학적 난수(crypto.getRandomValues)로 시드를 하나 만들고, 그 시드로 구슬의 출발 자리와 작은 흔들림을 정합니다. 그 뒤는 정해진 물리 계산이라 진행 중에 결과를 바꾸는 버튼이나 설정이 없습니다. 계산은 모두 브라우저 안에서 이뤄져 서버나 운영자가 끼어들 수 없고, 구슬은 모두 같은 크기·같은 무게라 이름이 결과에 영향을 주지 않습니다.

"이름*3"은 무슨 뜻인가요?▾

그 이름의 구슬을 3개 굴린다는 뜻으로, 당첨 기회가 3배가 됩니다. 같은 이름을 세 줄 적어도 똑같습니다. 한 명을 뽑을 때 당첨 확률은 "그 이름의 구슬 수 ÷ 전체 구슬 수"이고, 예를 들어 가람*3과 나래 한 개면 가람이 뽑힐 확률은 3/4입니다. 먼저 도착 방식은 그 이름의 가장 빠른 구슬, 마지막 도착 방식은 가장 늦은 구슬로 순위를 매기므로 어느 방식이든 구슬이 많을수록 뽑힐 기회가 늘어납니다.

당첨 인원을 여러 명으로 하면 같은 사람이 두 번 뽑히나요?▾

아닙니다. 당첨은 서로 다른 이름으로 셉니다. 먼저 도착 방식에서 같은 이름의 구슬이 1등과 2등으로 들어오면 그 이름은 한 번만 당첨되고, 다음으로 들어온 다른 이름이 2위가 됩니다. 도착 순위 목록에는 구슬마다 몇 번째로 들어왔는지가 모두 남습니다.

구슬이 끼어서 내려오지 않으면 어떻게 되나요?▾

구슬이 3초 넘게 더 내려가지 못하면 낀 것으로 보고 위쪽 무작위 방향으로 한 번 튕겨 줍니다. 그래도 시작 후 2분이 지나면 남은 구슬은 그 순간 결승선에 가까운(더 아래에 있는) 순서로 순위를 매기고 끝냅니다. 도착 순위 목록에는 "시간 제한"으로 표시됩니다. 판을 끼기 어렵게 설계해서, 시험한 경기에서는 보통 30초 안팎에 모든 구슬이 들어왔습니다.

마지막 도착은 언제 쓰나요?▾

꼴찌를 뽑는 방식이라 벌칙 정하기, 청소 당번, 계산할 사람 정하기처럼 "걸린 사람"을 뽑을 때 씁니다. 모든 구슬이 들어와야 결과가 정해지므로 먼저 도착보다 조금 오래 걸리고, 카메라는 기본으로 가장 뒤처진 구슬을 따라갑니다.

휴대폰에서 구슬 100개를 굴려도 괜찮나요?▾

물리 계산은 120분의 1초 간격으로 고정되어 있고, 화면은 그 계산 결과를 그릴 뿐입니다. 기기가 느려 화면이 계산을 따라가지 못하면 경기가 조금 느리게 보일 뿐 결과는 같습니다. "빠르게 ×2"도 같은 계산을 두 배 빨리 보여 주는 것이라 결과가 바뀌지 않습니다.

교실이나 방송 화면에 크게 띄울 수 있나요?▾

"전체 화면"을 누르면 판과 결과만 화면 가득 커지고, 당첨 결과도 큰 글씨로 나옵니다. 스페이스바나 Enter로 시작할 수 있고, 카메라를 선두와 꼴찌 가운데 어느 구슬을 따라갈지 고를 수 있습니다. 전체 화면을 지원하지 않는 브라우저(아이폰 사파리 등)에서는 버튼이 나오지 않습니다.

입력한 이름이 저장되나요?▾

참가자 목록과 당첨 방식·인원·속도 설정은 다음에 이어 쓸 수 있게 이 브라우저(localStorage)에만 저장되고 서버로 보내지 않습니다. 도착 순위와 결과는 저장하지 않아 새로 고침하면 사라집니다.

「마블 룰렛」에 관한 내용은 lazygyu의 GitHub 저장소(lazygyu/roulette) README, 골턴 보드와 플링코는 영어 위키백과 「Galton board」·「Plinko」 문서를 2026년 10월에 확인했습니다. 추첨은 브라우저 안에서만 계산되며, 참가자 목록과 설정은 이 브라우저에만 저장되고 서버로 전송되지 않습니다.