~ / calculator / random-number-generator

🎲 난수 생성기 (랜덤 숫자 뽑기)

최소·최대 범위에서 랜덤 숫자를 원하는 개수만큼 뽑아요. 중복 허용 여부와 정렬을 고를 수 있어요.

input
개
result
결과
-
광고

사용법

  1. 최소값과 최대값을 넣어요. 둘 다 결과에 포함돼요(예: 1~10이면 1과 10도 나와요). 음수도 쓸 수 있어요.
  2. 개수를 정하고, 중복을 허용할지 고르세요. "중복 없음"은 같은 숫자가 두 번 나오지 않아요. 추첨·번호 뽑기에 알맞아요. 개수가 범위의 숫자 개수보다 많으면 중복 없이 뽑을 수 없어요.
  3. 정렬(뽑힌 순서 / 작은 순 / 큰 순)을 고르고 뽑기를 누르세요. 다시 누르면 새로 뽑아요. 프리셋 버튼(로또 6/45, 주사위, 1~100 등)으로 바로 설정할 수도 있어요.

어떻게 무작위로 뽑나요

브라우저의 암호학적 난수 생성기(crypto.getRandomValues)로 뽑아요. 일반적으로 쓰는 Math.random보다 예측하기 어려워요. 또 "난수를 범위 크기로 나눈 나머지"를 그대로 쓰면 범위가 2의 거듭제곱이 아닐 때 특정 숫자가 조금 더 자주 나오는 편향이 생기는데, 이 도구는 범위를 넘는 값은 버리고 다시 뽑는 거절 샘플링을 써서 모든 숫자가 같은 확률로 나오게 했어요. 중복 없이 뽑을 때는 Fisher-Yates 섞기 방식으로 뽑아서, 범위가 아주 커도(예: 1~10억) 필요한 개수만큼만 계산해요.

검산도 했어요. 주사위(1~6)를 12만 번 굴려 각 면이 이론값 20,000번에서 ±4% 안에 들어오는지, 중복 불허로 1~10에서 10개를 뽑으면 1~10이 한 번씩 나오는지 확인했어요.

확률 예시 (직접 계산)

상황확률계산
1~6 주사위에서 특정 숫자 하나약 16.7%1 ÷ 6
1~100에서 특정 숫자 하나1%1 ÷ 100
1~10에서 3개 중복 없이 뽑을 때 특정 숫자가 포함될 확률30%3 ÷ 10
로또 6/45 한 조합이 1등 번호와 일치1 ÷ 8,145,06045C6 = 8,145,060
동전 던지기 연속 3번 앞면12.5%(1 ÷ 2)³

같은 숫자가 연달아 나오거나 규칙처럼 보이는 배열이 나와도 정상이에요. 진짜 무작위 열에서도 우연히 패턴처럼 보이는 일이 흔해요. 이전에 나온 숫자는 다음 결과에 영향을 주지 않아요(독립 시행).

어디에 쓰나요

상황별 추천 설정

하고 싶은 일최소~최대개수중복
반 학생 30명 중 발표자 3명 뽑기1~303중복 없음
발표 순서 전체 정하기 (8명)1~88중복 없음 (뽑힌 순서 유지)
주사위 한 번 굴리기1~61상관없음
주사위 두 개 합 구하기1~62중복 허용
4자리 임의 숫자(예: 인증번호 연습)0~94중복 허용
사다리 타기 도착 번호 배정1~인원수인원수중복 없음

주사위 두 개 합처럼 중복을 허용하면 같은 눈이 둘 다 나올 수 있어요. 이때 합계는 결과 아래 표에 바로 나와요. 인증번호처럼 보안이 필요한 값은 이 도구로 연습만 하고 실제 서비스에서는 서버에서 만드세요.

공정한 추첨을 진행하는 순서

  1. 참가자 명단에 번호를 먼저 확정하고 모두에게 공개해요. 뽑은 뒤에 번호를 바꾸면 분쟁이 생겨요.
  2. 당첨 인원과 중복 여부(한 사람이 두 번 당첨될 수 있는지)를 미리 정해요. 한 사람이 한 번만 당첨되어야 하면 "중복 없음"이에요.
  3. 모두가 보는 앞에서 뽑아요. 화면 공유나 캡처로 범위, 개수, 결과가 한 화면에 보이도록 남기면 설명하기 쉬워요.
  4. 예비 당첨자가 필요하면 처음부터 "당첨 인원 + 예비 인원"만큼 뽑아 앞에서부터 순서를 매겨요. 다시 뽑는 방식은 분쟁이 생기기 쉬워요.

코드로 같은 걸 만들려면

웹 개발자라면 같은 방식을 직접 만들 수 있어요. 정수 하나를 균등하게 뽑는 가장 간단한 방법은 Math.random을 쓰는 거예요.

// min~max 포함 정수 1개
const r = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
r(1, 6);

위 코드는 연습·게임용으로 충분해요. 보안이 필요하면 crypto.getRandomValues를 쓰고 거절 샘플링으로 편향을 없애야 해요. 중복 없는 N개 뽑기는 배열을 만들어 Fisher-Yates로 섞은 뒤 앞에서 N개를 가져가는 방식이 정석이고, 범위가 아주 큰 경우에는 이 도구처럼 바뀐 자리만 Map에 기록하는 방식이 메모리를 아껴요. 파이썬은 random.sample(range(1, 46), 6)이 중복 없는 6개를 뽑아 줘요. 암호용은 secrets 모듈을 쓰세요.

랜덤에 대한 흔한 오해

큰 수의 법칙을 직접 확인해 보기

주사위 프리셋(1~6)에서 개수를 100, 1,000으로 바꿔 가며 뽑고 평균을 보세요. 이론상 평균은 (1+2+3+4+5+6) ÷ 6 = 3.5예요. 10개만 뽑으면 평균이 3.0이나 4.2처럼 크게 흔들리지만, 1,000개를 뽑으면 대체로 3.4~3.6 사이에 들어와요. 표본이 커질수록 평균의 흔들림이 줄어드는 것을 통계에서 큰 수의 법칙이라고 해요. 같은 방식으로 1~100에서 1,000개를 뽑으면 평균이 50 근처로 모이고, 1~10에서 뽑으면 5.5 근처로 모여요. 학교 수업의 통계 실습이나 간단한 시뮬레이션에서 표본을 빠르게 만들 때 활용하세요. 같은 설정으로 여러 번 뽑아 결과가 매번 달라지는지 확인해 보는 것도 난수가 제대로 작동하는지 이해하는 좋은 방법이에요. 결과는 새로고침해도 다시 뽑히니 필요한 값은 미리 복사해 두세요. 합계와 평균은 결과 아래 줄에 바로 나오고, "복사용" 줄의 값을 그대로 복사해 스프레드시트에 붙여 넣을 수 있어요. 더 자세한 분산·표준편차는 표준편차 계산기에 붙여 넣어 구하면 돼요.

주의할 점

이 도구의 결과는 브라우저 안에서만 만들어지고 서버로 보내지 않아요. 다만 보안용 값(비밀번호, 토큰, 암호 키)을 만들 때는 숫자만 뽑기보다 비밀번호 생성기처럼 목적에 맞는 도구를 쓰세요. 금전이 걸린 추첨은 법과 약관에 맞는 절차와 기록이 필요해요. 이 도구는 참고용이라 공식 추첨 증빙으로 쓰기에는 부족할 수 있어요.

범위를 크게 잡으면(1~10억) 숫자가 길어지니 화면에 줄바꿈으로 보여 줘요. 한 번에 뽑을 수 있는 개수는 1,000개까지로 제한했고, 합계와 평균을 같이 보여 주니 통계 연습용 표본 데이터로도 쓸 수 있어요. 범위 안에서 균등하게 뽑으므로 평균은 범위의 중간값(최소+최대의 반)에 가까워지고, 뽑는 개수가 많을수록 더 가까워져요. 예를 들어 1~100에서 1,000개를 뽑으면 평균이 대체로 50 근처로 나와요.

난수는 브라우저의 crypto.getRandomValues로 만들어요. 로또 등 복권은 어떤 번호든 당첨 확률이 같아요. 입력값은 이 브라우저 밖으로 나가지 않아요.

자주 묻는 질문

최소값과 최대값도 나오나요?
네. 둘 다 결과에 포함돼요. 1~10이면 1부터 10까지 모든 정수가 같은 확률이에요.
중복 없이 뽑으려면요?
"중복 없음"을 고르세요. 범위의 숫자 개수보다 많은 개수는 뽑을 수 없어요(예: 1~5에서 6개).
진짜 무작위인가요?
브라우저의 암호학적 난수(crypto.getRandomValues)를 쓰고, 모듈로 편향이 없게 거절 샘플링을 해서 모든 숫자가 같은 확률이에요. 다만 법적 효력이 필요한 추첨 증빙으로는 별도 절차가 필요해요.
같은 숫자가 연속으로 나오는데 오류 아닌가요?
중복을 허용하면 연속으로 같은 숫자가 나올 수 있어요. 독립 시행이라 정상이에요. 중복이 싫다면 "중복 없음"을 고르세요.
로또 번호로 써도 되나요?
1~45에서 6개를 중복 없이 뽑는 프리셋이 있어요. 어떤 조합이든 1등 확률은 1/8,145,060으로 같아요.
소수나 음수도 되나요?
음수 정수는 돼요(예: -10~10). 소수는 지원하지 않고 정수만 뽑아요.

관련 도구

더 둘러보기

🧮 계산 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →