북마크    
근의 공식    
원 계산기    
타원 넓이    
구의 부피    
캡슐 부피    
ROI 계산기    
IRR 계산기    
GDP 계산기    
CTR 계산기    
LTV 계산기    
CAC 계산기    
BMI 계산기    
1RM 계산기    
진법 변환    
급여 환산    
   추가
확률과 무작위 계산기
독립사건 확률
독립사건 확률
두 사건 확률 역산
두 사건 확률 역산
반복 시행의 확률
반복 시행의 확률
조건부확률·베이즈
조건부확률·베이즈
기댓값 계산기
기댓값 계산기
이항분포 계산기
이항분포 계산기
순열·조합
순열·조합
원순열·염주순열
원순열·염주순열
중복순열·중복조합
중복순열·중복조합
난수 생성기
난수 생성기
평균과 통계 계산기
평균 계산기
평균 계산기
대푯값 계산기
대푯값 계산기
표준편차 계산기
표준편차 계산기
사분위수 계산기
사분위수 계산기
도수분포표 계산기
도수분포표 계산기
상관계수 계산기
상관계수 계산기
정규분포 확률
정규분포 확률
z점수 계산기
z점수 계산기
신뢰구간 계산기
신뢰구간 계산기
표본 크기 계산기
표본 크기 계산기
표지 재포획법
표지 재포획법
p값 계산기
p값 계산기
비율과 백분율 계산기
퍼센트 계산기
퍼센트 계산기
증감률 계산기
증감률 계산기
퍼센트 차이
퍼센트 차이
오차율 계산기
오차율 계산기
비례식 계산기
비례식 계산기
할인율 계산기
할인율 계산기
부가세 계산기
부가세 계산기
마진율 계산기
마진율 계산기
속력 계산기
속력 계산기
속력 계산기
밀도와 농도 계산기
밀도 계산기
밀도 계산기
몰 농도 계산기
몰 농도 계산기
분자량·몰 질량
분자량·몰 질량
물리와 전기 계산기
옴의 법칙 계산
옴의 법칙 계산
와트·암페어 변환
와트·암페어 변환
저항 색 코드
저항 색 코드
전압강하 계산
전압강하 계산
단위 변환 계산기
평 ↔ m² 환산
평 ↔ m² 환산
무게 단위 변환
무게 단위 변환
신발 사이즈 변환
신발 사이즈 변환
정수와 양수·음수 계산기
나눗셈 세로셈
나눗셈 세로셈
최소공배수
최소공배수
최대공약수
최대공약수
양수 음수 계산기
양수 음수 계산기
소인수분해
소인수분해
일차부정방정식
일차부정방정식
나머지 계산기
나머지 계산기
약수 계산기
약수 계산기
로마 숫자 변환
로마 숫자 변환
분수·소수와 어림하기 계산기
분수 계산기
분수 계산기
대분수 계산기
대분수 계산기
약분 계산기
약분 계산기
분수 → 소수 변환
분수 → 소수 변환
소수 → 분수 변환
소수 → 분수 변환
반올림 계산기
반올림 계산기
방정식과 부등식 계산기
일차방정식 계산기
일차방정식 계산기
연립방정식 계산기
연립방정식 계산기
근의 공식
근의 공식
절댓값 방정식
절댓값 방정식
이차부등식 계산기
이차부등식 계산기
다항식과 전개 계산기
이항정리 계산기
이항정리 계산기
제곱근과 거듭제곱근 계산기
근호 계산기
근호 계산기
거듭제곱근 계산
거듭제곱근 계산
지수와 로그 계산기
거듭제곱 계산기
거듭제곱 계산기
로그 계산기
로그 계산기
상용로그와 자릿수
상용로그와 자릿수
과학적 표기법
과학적 표기법
과학적 표기법 계산
과학적 표기법 계산
반감기 계산기
반감기 계산기
복소수 계산기
복소수 계산기
복소수 계산기
복소수 극형식
복소수 극형식
드무아브르 정리
드무아브르 정리
함수와 그래프 계산기
기울기 계산기
기울기 계산기
일차함수 계산기
일차함수 계산기
정비례·반비례
정비례·반비례
이차함수 계산기
이차함수 계산기
두 점 사이의 거리
두 점 사이의 거리
3차원 거리 계산
3차원 거리 계산
내분점·외분점
내분점·외분점
점과 직선의 거리
점과 직선의 거리
위도·경도 거리
위도·경도 거리
완전제곱식 계산기
완전제곱식 계산기
원의 방정식 계산기
원의 방정식 계산기
이차곡선 계산기
이차곡선 계산기
극좌표 변환 계산기
극좌표 변환 계산기
수열 계산기
등차수열 계산기
등차수열 계산기
등비수열 계산기
등비수열 계산기
피보나치 수열
피보나치 수열
점화식 계산기
점화식 계산기
벡터 계산기
벡터 계산기
벡터 계산기
외적 계산기
외적 계산기
행렬 계산기
행렬 계산기
행렬 계산기
행렬식 계산기
행렬식 계산기
역행렬 계산기
역행렬 계산기
평면도형 계산기
삼각비 계산기
삼각비 계산기
도 ⇔ 라디안 변환
도 ⇔ 라디안 변환
삼각함수의 합성
삼각함수의 합성
삼각형 계산기
삼각형 계산기
삼각형 넓이 계산기
삼각형 넓이 계산기
직각삼각형 계산
직각삼각형 계산
피타고라스 정리
피타고라스 정리
다각형의 내각·외각
다각형의 내각·외각
닮음비·넓이·부피
닮음비·넓이·부피
평행선과 각
평행선과 각
직사각형의 넓이
직사각형의 넓이
평행사변형 넓이
평행사변형 넓이
사다리꼴 넓이
사다리꼴 넓이
원 계산기
원 계산기
부채꼴 넓이
부채꼴 넓이
원주각 계산기
원주각 계산기
타원 넓이
타원 넓이
입체도형 계산기
정육면체 부피
정육면체 부피
정육면체 겉넓이
정육면체 겉넓이
직육면체 부피
직육면체 부피
직육면체 겉넓이
직육면체 겉넓이
원기둥 부피
원기둥 부피
원기둥 겉넓이
원기둥 겉넓이
구의 부피
구의 부피
구의 겉넓이
구의 겉넓이
구결의 부피
구결의 부피
구관의 넓이
구관의 넓이
타원체의 부피
타원체의 부피
타원체의 겉넓이
타원체의 겉넓이
사각뿔의 부피
사각뿔의 부피
사각뿔의 겉넓이
사각뿔의 겉넓이
원뿔의 부피
원뿔의 부피
원뿔의 겉넓이
원뿔의 겉넓이
원뿔대의 부피
원뿔대의 부피
원뿔대의 겉넓이
원뿔대의 겉넓이
파이프 부피
파이프 부피
캡슐 부피
캡슐 부피
캡슐 겉넓이
캡슐 겉넓이
날짜와 시간 계산기
만 나이 계산기
만 나이 계산기
일수 계산기
일수 계산기
며칠 후·전 날짜
며칠 후·전 날짜
몇 시간 후·전 계산
몇 시간 후·전 계산
요일 계산기
요일 계산기
시간 더하기 빼기
시간 더하기 빼기
시차 계산기
시차 계산기
근무시간 계산기
근무시간 계산기
시간 차이 계산기
시간 차이 계산기
근무시간 계산기
근무시간 계산기
금융과 경제 계산기
복리 계산기
복리 계산기
단리 계산기
단리 계산기
이자 계산기
이자 계산기
재무용 계산기
재무용 계산기
현재가치 계산기
현재가치 계산기
미래가치 계산기
미래가치 계산기
ROI 계산기
ROI 계산기
IRR 계산기
IRR 계산기
회수기간 계산기
회수기간 계산기
평균 수익률 계산기
평균 수익률 계산기
GDP 계산기
GDP 계산기
웹 마케팅·광고 지표 계산기
CTR 계산기
CTR 계산기
전환율 계산기
전환율 계산기
CPC·CPM·CPA 계산
CPC·CPM·CPA 계산
ROAS 계산기
ROAS 계산기
손익분기 CPA
손익분기 CPA
LTV 계산기
LTV 계산기
CAC 계산기
CAC 계산기
이탈률 계산기
이탈률 계산기
A/B 테스트 유의성
A/B 테스트 유의성
A/B 표본 크기
A/B 표본 크기
SEO 유입 예측
SEO 유입 예측
손익분기점 계산기
손익분기점 계산기
마진율·마크업률
마진율·마크업률
CAGR 계산기
CAGR 계산기
건강과 피트니스 계산기
BMI 계산기
BMI 계산기
수면 주기 계산기
수면 주기 계산기
칼로리 계산기
칼로리 계산기
기초대사량 계산기
기초대사량 계산기
TDEE 계산기
TDEE 계산기
표준체중 계산기
표준체중 계산기
체지방률 계산기
체지방률 계산기
제지방량 계산기
제지방량 계산기
칼로리 소모 계산기
칼로리 소모 계산기
단백질 계산기
단백질 계산기
탄단지 계산기
탄단지 계산기
탄수화물 계산기
탄수화물 계산기
지방 섭취량 계산기
지방 섭취량 계산기
예상키 계산기
예상키 계산기
스포츠 계산기
골프 핸디캡
골프 핸디캡
페이스 계산기
페이스 계산기
1RM 계산기
1RM 계산기
목표심박수 계산기
목표심박수 계산기
날씨 계산기
열지수 계산기
열지수 계산기
겨울 체감온도
겨울 체감온도
이슬점 계산기
이슬점 계산기
컴퓨터 계산기
진법 변환
진법 변환
서브넷 계산기
서브넷 계산기
다운로드 시간 계산
다운로드 시간 계산
가계와 공과금 계산기
가전 전기요금
가전 전기요금
전기요금 계산기
전기요금 계산기
연간 kWh→전기요금
연간 kWh→전기요금
에어컨 평형 계산
에어컨 평형 계산
에어컨 전기요금
에어컨 전기요금
난방 전기요금 비교
난방 전기요금 비교
가스 vs 전기 요금
가스 vs 전기 요금
LED 교체 절약액
LED 교체 절약액
급여 환산
급여 환산
가계 수지 계산
가계 수지 계산
자동차 계산기
주유비 계산기
주유비 계산기
전기차 충전 요금
전기차 충전 요금
전기차 vs 휘발유차
전기차 vs 휘발유차
연비 계산기
연비 계산기
타이어 사이즈 계산
타이어 사이즈 계산
태양광 발전과 에너지 저장 계산기
태양광 발전량
태양광 발전량
태양광 패널 장수
태양광 패널 장수
태양광 회수기간
태양광 회수기간
ESS 용량·사용 시간
ESS 용량·사용 시간
집과 DIY 계산기
타일 수량 계산
타일 수량 계산
계단 치수 계산
계단 치수 계산
콘크리트 물량
콘크리트 물량
벽·천장·바닥 면적
벽·천장·바닥 면적
벽지 계산기
벽지 계산기
페인트 계산기
페인트 계산기
마루 계산기
마루 계산기
외벽 면적 계산
외벽 면적 계산
자갈 계산기
자갈 계산기
몰탈 배합 계산
몰탈 배합 계산
경사도 계산
경사도 계산
목재 재단 계산
목재 재단 계산
건폐율·용적률
건폐율·용적률
장판 필요량
장판 필요량
단열재 필요량
단열재 필요량
커튼 사이즈
커튼 사이즈
TV 크기·시청 거리
TV 크기·시청 거리
흙·배양토 필요량
흙·배양토 필요량
잔디 평수·장수
잔디 평수·장수
블록 담장 수량
블록 담장 수량
벽돌 필요 장수
벽돌 필요 장수
데크 자재 계산
데크 자재 계산
경사로 길이
경사로 길이
피스 가이드 홀
피스 가이드 홀
필요 환기량
필요 환기량
페인트 희석
페인트 희석
걸레받이 계산기
걸레받이 계산기
블라인드 사이즈
블라인드 사이즈
액자 거는 높이
액자 거는 높이
배수 구배·높이차
배수 구배·높이차
피스 수량 계산
피스 수량 계산
목재 재 계산
목재 재 계산
펜스 자재 계산
펜스 자재 계산
목재 수축량 계산
목재 수축량 계산
실리콘 필요량
실리콘 필요량
방 열손실 계산기
방 열손실 계산기
가구 반입 계산기
가구 반입 계산기
이사 박스 개수
이사 박스 개수
수납 용량 계산기
수납 용량 계산기
합판 재단 계산기
합판 재단 계산기
선반 처짐 계산
선반 처짐 계산

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

최솟값과 최댓값을 입력하고 ‘계산’을 누르면 그 범위의 난수를 생성합니다. 개수, 소수점 아래 자릿수, 중복 있음·없음도 지정할 수 있습니다(최솟값과 최댓값 외에는 비워 두어도 됩니다. 비워 두면 ‘정수 1개·중복 있음’입니다).

개수는 1~999의 정수, 소수점 아래 자릿수는 0~50의 정수로 입력하세요. 같은 입력이라도 누를 때마다 다른 난수가 나옵니다.
계산 결과
왼쪽 입력란에 범위를 넣고 ‘계산’을 누르면 여기에 생성된 난수가 표시됩니다.

이 페이지에서 할 수 있는 것

  • 최솟값과 최댓값만 넣으면 그 범위의 난수(무작위로 뽑힌 수)를 그 자리에서 만들 수 있습니다
  • 정수뿐 아니라 소수의 난수도 만들 수 있습니다. 소수점 아래 자릿수는 0~50자리로 지정할 수 있습니다
  • 한 번에 최대 999개까지 생성할 수 있고, 중복 ‘있음·없음’도 고를 수 있습니다. 2개 이상 만들면 생성한 순서와 함께 오름차순·내림차순으로 정렬한 결과도 동시에 표시합니다
  • 1~6 같은 작은 범위부터 20자리가 넘는 아주 큰 정수까지 다룰 수 있습니다
  • 난수의 원리에 대한 쉬운 해설과 Excel·Google 스프레드시트·Python에 복사해 쓸 수 있는 수식도 이 페이지에 모아 두었습니다
이 페이지의 난수는 컴퓨터가 계산식으로 만드는 의사난수입니다(생성에는 암호 분야에서도 쓰이는 품질의 방식을 사용합니다). 추첨, 게임, 시뮬레이션 등에는 충분히 무작위적이지만, 암호 키나 비밀번호 자체를 만들 때는 통신을 거치지 않는 전용 도구를 사용하세요.

이 계산은 어디에 쓰일까요?

공정한 추첨·제비뽑기·자리 바꾸기(당번 정하기)

응모자나 학생에게 번호를 매기고 난수로 고르면 누구의 의도도 들어가지 않는 공정한 방법이 됩니다. 모두가 뽑힐 확률이 같으므로(균등분포) 수학적으로 공정함이 보장되는 추첨입니다.
로또 6/45가 ‘1~45 중 6개, 중복 없음’인 것도 바로 이 형식이며, 번호를 고르는 방법은 8,145,060가지(약 814만 가지)입니다.

여론조사·통계 조사의 임의추출

‘국민 모두에게 묻지 않고 왜 수천 명의 조사로 여론을 알 수 있을까?’ 그 바탕이 조사 대상을 난수로 고르는 임의추출입니다. 일부러 고르면 결과가 치우치므로, 무작위로 뽑는 것이 조사의 신뢰성을 지탱합니다.
여론조사에서 쓰이는 RDD(임의 번호 걸기) 방식은 전화번호 자체를 난수로 만들어 거는 방법으로, 전화번호부에 실리지 않은 사람에게도 같은 확률로 전화가 가도록 합니다.

시뮬레이션(몬테카를로 방법): 금융·기상·과학

너무 복잡해서 식으로 풀 수 없는 문제라도 난수로 수만 번 시행해 결과를 모으면 답에 가까운 값을 얻을 수 있습니다. 이를 몬테카를로 방법이라고 하며, 금융 기관의 위험 계산, 앙상블 일기 예보(조건을 조금씩 바꾼 예보를 여러 번 계산하는 방법), 물리학·의학 연구까지 폭넓게 쓰입니다.
‘난수의 평균은 기댓값에 가까워진다’는, 이 페이지에서 배우는 성질이 그 이론적인 바탕입니다.

게임의 우연성(주사위·카드 섞기·확률형 아이템)

디지털 게임 속의 우연, 즉 주사위의 눈, 카드 섞기, 확률형 아이템(뽑기), 맵의 자동 생성은 모두 의사난수로 만들어집니다. 한국에서는 2024년 3월부터 게임산업법에 따라 확률형 아이템의 확률 공개가 의무화되었습니다.
‘시드가 같으면 같은 열이 재현된다’는 의사난수의 성질은 리플레이 기능이나 ‘같은 시드 값의 맵을 친구와 공유해서 즐기는’ 기능에 오히려 적극적으로 활용됩니다.

암호·보안을 지탱하는 난수(와 의사난수의 한계)

인터넷 쇼핑의 암호 통신도, 일회용 비밀번호(OTP)도 ‘공격자가 예측할 수 없는 수’, 즉 난수가 없으면 성립하지 않습니다.
여기서는 예측될 수 있는 보통의 의사난수를 쓸 수 없으므로, 암호학적으로 강화된 생성기나 열잡음 같은 물리 현상으로 만드는 하드웨어 난수를 씁니다. 난수의 품질이 세상의 안전을 좌우하는, 가장 엄격한 쓰임입니다.

공식

정수 난수가 각 값이 될 확률(이산 균등분포)
수학 표기 (일반적인 수식)
\(P(X=k)\) \(=\) \(1\) \(\div\) \((b-a+1)\)
말로 쓴 표기 (기호를 말로 바꾼 식)
③ 어떤 정수 \(k\)가 나올 확률 \(P(X=k)\) \(=\) ① 전체 확률 \(1\) \(\div\) ② 정수 후보의 개수 \((b-a+1)\)
공식을 말로 읽으면
① 전체 확률(\(1\)) 을
② 정수 후보의 개수(\((b-a+1)\)) 로 똑같이 나누면
③ 어떤 정수 \(k\)가 나올 확률(\(P(X=k)\)) 이 됩니다(어느 정수나 같은 확률로 나옵니다)
간단한 예
주사위는 ‘1~6의 정수 난수’로 생각할 수 있습니다. 3이 나올 확률은
3이 나올 확률 \(P\) \(=\) 전체 확률 \(1\) \(\div\) 후보의 개수(6개)
\(1 \div (6 - 1 + 1) = \frac{1}{6} \fallingdotseq 0.167\ \ (16.7\%)\)
이해의 핵심
난수 생성기는 ‘범위 안의 어느 수나 같은 확률로 나오도록’ 만들어져 있습니다. 이런 분포를 균등분포라고 합니다. 최솟값을 \(a\), 최댓값을 \(b\)라고 하면 정수의 후보는 \(b - a + 1\)개(1~6이면 \(6 - 1 + 1 = 6\)개)이므로, 각각이 나올 확률은 1을 그 개수로 나눈 값입니다. ‘방금 3이 나왔으니 다음에는 3이 잘 안 나온다’는 일은 없고, 매번 처음으로 돌아가 같은 확률입니다.
소수 난수가 나오기 쉬운 정도(연속 균등분포의 확률밀도)
수학 표기 (일반적인 수식)
\(f(x)\) \(=\) \(1\) \(\div\) \((b-a)\)
말로 쓴 표기 (기호를 말로 바꾼 식)
③ 확률밀도(그래프의 높이) \(f(x)\) \(=\) ① 전체 확률 \(1\) \(\div\) ② 범위의 폭 \((b-a)\)
공식을 말로 읽으면
① 전체 확률(\(1\)) 을
② 범위의 폭(\((b-a)\)) 위에 고르게 펴면
③ 확률밀도(그래프의 높이) \(f(x)\)가 됩니다(그래프는 평평한 직사각형이 됩니다)
간단한 예
0~10의 소수 난수에서는 그래프의 높이가 1 ÷ 10 = 0.1입니다. ‘2 이상 5 이하에 들어갈 확률’은 높이 × 폭으로 구할 수 있습니다
그래프의 높이 \(f(x)\) \(=\) 전체 확률 \(1\) \(\div\) 범위의 폭(10)
\(1 \div (10 - 0) = 0.1\)
\(0.1 \times (5 - 2) = 0.3\ \ (30\%)\)
이해의 핵심
소수 난수는 후보가 무한히 많으므로 ‘정확히 3.000…이 될 확률’은 어느 한 점에서나 0입니다. 그래서 소수 난수에서는 ‘어느 범위에 들어갈 확률’을 생각합니다. 확률은 그래프 아래의 넓이(높이 × 폭)이고, 범위 전체에서는 \(0.1 \times 10 = 1\)(100%)이 됩니다. 높이 \(f(x)\)가 범위 안의 어디에서나 같다, 즉 어디나 같은 정도로 나오기 쉽다는 것이 균등분포입니다.
난수의 평균(균등분포의 기댓값)
수학 표기 (일반적인 수식)
\(E[X]\) \(=\) \((a+b)\) \(\div\) \(2\)
말로 쓴 표기 (기호를 말로 바꾼 식)
③ 난수의 평균(기댓값) \(E[X]\) \(=\) ① 최솟값 \(a\)와 최댓값 \(b\)의 합 \((a+b)\) \(\div\) ② 나누는 수 \(2\)(한가운데를 잡음)
공식을 말로 읽으면
① 최솟값 \(a\)와 최댓값 \(b\)의 합(\((a+b)\)) 을
② 나누는 수(\(2\)) 로 나누어 범위의 정확히 한가운데를 잡으면
③ 난수의 평균(기댓값) \(E[X]\)가 됩니다
간단한 예
1~100의 정수 난수를 많이 만들었을 때 그 평균이 가까워지는 값은
난수의 평균(기댓값) \(E[X]\) \(=\) 최솟값과 최댓값의 합(1 + 100) \(\div\) 나누는 수(2)
\((1 + 100) \div 2 = 50.5\)
이해의 핵심
균등분포는 범위 안에서 좌우 대칭이므로 평균(기댓값)은 정확히 한가운데입니다. 주사위(1~6)라면 \((1+6) \div 2 = 3.5\)입니다. 한 번 던질 때마다 나오는 눈은 정수이지만, 여러 번 던진 평균은 3.5에 점점 가까워집니다. 흩어진 정도(분산)는 소수의 균등 난수에서 \(V[X] = \frac{(b-a)^2}{12}\)로 구할 수 있습니다.
0~1의 난수로 범위 안의 정수 난수를 만드는 변환
수학 표기 (일반적인 수식)
\(n\) \(=\) \(a\) \(+\) \(\lfloor\) \(u\) \(\times\) \((b-a+1)\) \(\rfloor\)
말로 쓴 표기 (기호를 말로 바꾼 식)
⑤ 범위 안의 정수 난수 \(n\) \(=\) ④ 최솟값 \(a\) \(+\) \(\lfloor\) ① 0 이상 1 미만의 난수 \(u\) \(\times\) ② 정수 후보의 개수 \((b-a+1)\) ③ \(\rfloor\)
공식을 말로 읽으면
① 0 이상 1 미만의 난수(\(u\)) 에
② 정수 후보의 개수(\((b-a+1)\)) 를 곱해 늘이고
③ 기호 \(\lfloor\ \rfloor\)(바닥 함수)로 소수점 아래를 버려 정수로 만든 뒤
④ 최솟값(\(a\)) 을 더하면
⑤ 범위 안의 정수 난수(\(n\)) 가 됩니다
간단한 예
0 이상 1 미만의 난수가 0.32였을 때, 1~10의 정수 난수로 변환하면
정수 난수 \(n\) \(=\) 최솟값(1) \(+\) \(\lfloor\) 0~1의 난수(0.32) \(\times\) 후보의 개수(10개) \(\rfloor\)
\(1 + \lfloor 0.32 \times 10 \rfloor = 1 + \lfloor 3.2 \rfloor = 1 + 3 = 4\)
이해의 핵심
컴퓨터의 난수는 먼저 ‘0 이상 1 미만의 소수’로 만들어지는 경우가 많고, 이 식으로 원하는 범위로 변환합니다. \(u\)가 0과 1 사이에 고르게 흩어져 있으면 \(n\)도 \(a\)부터 \(b\)까지의 어느 정수가 될 가능성이 모두 같습니다. Excel의 RAND 함수로 정수 난수를 만들 때도 바로 이 식을 씁니다(Excel 부분 참고).
의사난수를 만드는 대표적인 방법(선형 합동법)
수학 표기 (일반적인 수식)
\(X_{n+1}\) \(=\) \((aX_n + c)\) \(\bmod\) \(m\)
말로 쓴 표기 (기호를 말로 바꾼 식)
③ 다음 난수 \(X_{n+1}\) \(=\) ① 지금의 난수 \(X_n\)에 \(a\)를 곱하고 \(c\)를 더한 수 \(\bmod\) ② 나누는 수 \(m\)
공식을 말로 읽으면
① 지금의 난수 \(X_n\)에 \(a\)를 곱하고 \(c\)를 더한 수 를
② 나누는 수(\(m\)) 로 나눈 나머지를 구하면
③ 다음 난수(\(X_{n+1}\)) 가 됩니다(이것을 되풀이해 난수의 열을 만듭니다)
간단한 예
곱하는 수 5, 더하는 수 3, 나누는 수 16으로 하고 처음 값(시드)을 7로 하면, 난수의 열은 다음과 같이 정해집니다
다음 난수 \(X_1\) \(=\) 7에 5를 곱하고 3을 더한 수(38) \(\bmod\) 나누는 수(16)
\((5 \times 7 + 3) \bmod 16 = 38 \bmod 16 = 6\)
\((5 \times 6 + 3) \bmod 16 = 33 \bmod 16 = 1\)
이해의 핵심
‘곱하고, 더하고, 나머지를 구하는’ 단순한 계산을 되풀이하는 것만으로 무작위처럼 보이는 수의 열을 만들 수 있습니다. 이것이 의사난수의 기본 아이디어입니다(여기의 \(a, c, m\)은 미리 정해 둔 상수로, 위의 식에 나온 최솟값·최댓값과는 다릅니다). 중요한 성질은 처음 값(시드)이 같으면 완전히 같은 열이 재현된다는 것입니다. 즉 계산식으로 만든 난수는 진짜 우연이 아닙니다. 실제 컴퓨터에서는 단순한 선형 합동법 대신 메르센 트위스터 같은 개량된 방식을 쓰지만, ‘시드로 정해지는 계산의 열’이라는 핵심은 같습니다.
난수 생성기의 난수는 ‘범위 안의 어느 수나 같은 확률로 나오는’ 균등분포를 따릅니다. 컴퓨터의 난수는 계산식으로 만드는 의사난수이고, 시드(처음 값)가 같으면 같은 열이 재현됩니다. 진짜 우연이 아니라는 것이 가장 중요한 포인트입니다.

용어·기호 해설

기호

\(a\) 에이 난수 범위의 최솟값(이 수 이상)입니다. (예: 1~100의 난수라면 \(a = 1\))
\(b\) 비 난수 범위의 최댓값(이 수 이하)입니다. (예: 1~100의 난수라면 \(b = 100\))
\(P(X=k)\) 피 엑스 이퀄 케이 난수 \(X\)가 정확히 정수 \(k\)가 될 확률입니다. 정수의 균등 난수에서는 어느 \(k\)에서나 같은 값입니다.
\(f(x)\) 에프 엑스(확률밀도) 소수 난수가 ‘나오기 쉬운 정도’를 나타내는 그래프의 높이(확률밀도함수)입니다. 균등분포에서는 범위 안의 어디에서나 높이가 같습니다.
\(E[X]\) 이 엑스(기댓값) 난수 \(X\)를 많이 생성했을 때 평균이 가까워지는 값입니다. E는 기댓값을 뜻하는 영어 Expectation의 첫 글자입니다.
\(u\) 유 0 이상 1 미만의 균등한 난수입니다. 컴퓨터 난수의 대부분은 먼저 이 꼴로 만들어진 뒤 원하는 범위로 변환됩니다.
\(\lfloor\ \rfloor\) 바닥(바닥 함수) 안에 있는 수의 소수점 아래를 버려 정수로 만드는 기호입니다. (예: \(\lfloor 3.2 \rfloor = 3\))
\(X_n\) 엑스 엔 의사난수 열의 \(n\)번째 값입니다. 처음 값 \(X_0\)이 시드(씨앗)입니다.
\(\bmod\) 모드 나눈 나머지를 구하는 계산입니다. (예: \(38 \bmod 16 = 6\). 38을 16으로 나누면 몫 2, 나머지 6)

용어

난수 주사위의 눈처럼 다음에 무엇이 나올지 예측할 수 있는 규칙이 없는 수입니다. 이 페이지의 생성기는 지정한 범위에서 무작위로 뽑힌 수를 만듭니다.
균등분포 범위 안의 어느 값이나 같은 정도로 나오기 쉬운 분포입니다. 정수 난수라면 ‘어느 정수나 같은 확률’, 소수 난수라면 ‘그래프의 높이가 어디서나 같음’이 됩니다.
의사난수 계산식으로 만드는 ‘난수처럼 보이는’ 수의 열입니다. 이를 만드는 장치를 영어로 PRNG(Pseudo Random Number Generator, 의사난수 생성기)라고 합니다. 컴퓨터의 난수는 거의 모두 이 의사난수입니다.
시드 의사난수의 계산을 시작할 때의 처음 값입니다. 같은 시드에서 시작하면 완전히 같은 난수의 열이 재현됩니다. 보통은 시각 등으로 자동으로 정해지므로 매번 다른 열처럼 보입니다.
선형 합동법 ‘곱하고, 더하고, 나머지를 구하는’ 것을 되풀이하는, 의사난수를 만드는 가장 고전적인 방법입니다. 원리를 배우기에는 가장 좋지만, 지금의 실제 쓰임에서는 더 품질이 좋은 방식(메르센 트위스터 등)이 주류입니다.
하드웨어 난수 주사위나 동전, 대기의 전기적 잡음, 전자 회로의 열잡음 같은 물리 현상으로 만드는 난수입니다. 계산식을 쓰지 않으므로 재현할 수 없고, ‘진짜 난수’에 가까운 것을 얻을 수 있습니다.
기댓값 확률적으로 나오는 값을 ‘여러 번 되풀이했을 때의 평균’입니다. 균등 난수의 기댓값은 범위의 정확히 한가운데입니다.
임의추출 (무작위 추출) 조사 대상을 사람의 의도를 넣지 않고 난수 등으로 무작위로 고르는 것입니다. 통계 조사에서 치우침을 피하기 위한 기본 방법으로, 랜덤 샘플링이라고도 합니다.

먼저 알아 두면 좋은 내용

이 페이지의 계산을 ‘의미를 알고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.

나머지가 있는 나눗셈(초등학교 3학년, 8~9세)
  • 38 ÷ 16 = 2…6처럼 나눗셈의 나머지를 구할 수 있는 것(선형 합동법에서 씁니다)
소수와 버림(초등학교 3~5학년, 8~11세)
  • 3.2의 소수점 아래를 버려 3으로 만들 수 있는 것
  • 소수점 아래 ‘자릿수’가 소수 첫째 자리, 소수 둘째 자리…라는 자리를 뜻한다는 것을 아는 것
비율과 백분율(초등학교 6학년, 11~12세)
  • 확률 0.1과 10%처럼 소수와 백분율을 서로 바꿀 수 있는 것
확률의 기초(중학교 2학년, 13~14세)
  • 모든 경우가 같은 정도로 일어나기 쉬울 때, 확률을 (해당하는 경우의 수) ÷ (모든 경우의 수)로 구할 수 있는 것
  • ‘방금 나온 눈’이 ‘다음에 나올 눈’의 확률에 영향을 주지 않는다는 것(독립)
기댓값(고등학교, 15~18세)
  • 기댓값이 ‘여러 번 되풀이했을 때의 평균’을 나타내는 값이라는 것을 아는 것

Excel로 계산하는 방법

아래 표를 통째로 복사해 Excel의 A1 셀에 붙여 넣으면 그대로 사용할 수 있습니다.
각 정수가 나올 확률을 구하는 표
최솟값 a 1
최댓값 b 6
각 정수가 나올 확률 =1/(B2-B1+1)
소수 난수의 그래프 높이(확률밀도)를 구하는 표
최솟값 a 0
최댓값 b 10
확률밀도(그래프의 높이) =1/(B2-B1)
난수의 평균(기댓값)을 구하는 표
최솟값 a 1
최댓값 b 100
난수의 평균(기댓값) =(B1+B2)/2
정수 난수를 만드는 표
최솟값 a 1
최댓값 b 100
정수 난수(다시 계산할 때마다 바뀜) =B1+INT(RAND()*(B2-B1+1))
선형 합동법으로 다음 난수를 구하는 표
지금의 난수 Xn 7
곱하는 수 a 5
더하는 수 c 3
나누는 수 m 16
다음 난수 =MOD(B2*B1+B3,B4)
붙여 넣으면 위쪽 행이 입력란이 되고, 마지막 행의 수식이 자동으로 계산된 결과가 됩니다.
첫 번째 표는 약 0.1667(= 1/6), 세 번째 표는 50.5, 다섯 번째 표는 6이 표시됩니다.
네 번째 표의 RAND()는 ‘0 이상 1 미만의 난수’를 만드는 함수로, 공식 부분의 변환식을 그대로 옮긴 꼴입니다. F9 키를 누를 때마다 새로운 난수가 나옵니다.
참고로 정수 난수에는 Excel 전용 함수 =RANDBETWEEN(B1,B2)도 있어서, 같은 결과를 함수 하나로 얻을 수 있습니다.

Google 스프레드시트로 계산하는 방법

아래 표를 통째로 복사해 Google 스프레드시트의 A1 셀에 붙여 넣으면 그대로 사용할 수 있습니다.
각 정수가 나올 확률을 구하는 표
최솟값 a 1
최댓값 b 6
각 정수가 나올 확률 =1/(B2-B1+1)
소수 난수의 그래프 높이(확률밀도)를 구하는 표
최솟값 a 0
최댓값 b 10
확률밀도(그래프의 높이) =1/(B2-B1)
난수의 평균(기댓값)을 구하는 표
최솟값 a 1
최댓값 b 100
난수의 평균(기댓값) =(B1+B2)/2
정수 난수를 만드는 표
최솟값 a 1
최댓값 b 100
정수 난수(다시 계산할 때마다 바뀜) =B1+INT(RAND()*(B2-B1+1))
선형 합동법으로 다음 난수를 구하는 표
지금의 난수 Xn 7
곱하는 수 a 5
더하는 수 c 3
나누는 수 m 16
다음 난수 =MOD(B2*B1+B3,B4)
Excel과 같은 수식을 그대로 쓸 수 있습니다(RAND, RANDBETWEEN, INT, MOD는 Google 스프레드시트에서도 같은 이름입니다).
표를 통째로 복사해 A1 셀에 붙여 넣고, 입력란의 숫자를 원하는 값으로 바꾸세요.

Python으로 계산하는 방법

import random

lower = 1     # 최솟값
upper = 100   # 최댓값
count = 5     # 생성할 개수

# 정수 난수(중복 있음)
integers = [random.randint(lower, upper) for _ in range(count)]
# 정수 난수(중복 없음)
unique_integers = random.sample(range(lower, upper + 1), count)
# 소수 난수
decimals = [random.uniform(lower, upper) for _ in range(count)]

print(f"정수 난수(중복 있음): {integers}")
print(f"정수 난수(중복 없음): {unique_integers}")
print(f"소수 난수: {decimals}")

# 시드를 고정하면 실행할 때마다 같은 열이 다시 나옵니다(의사난수의 성질)
random.seed(42)
print(f"시드 42로 만든 난수: {[random.randint(1, 100) for _ in range(3)]}")
표준 라이브러리의 random 모듈만으로 동작합니다(메르센 트위스터라는 의사난수 생성기입니다). 마지막 두 줄을 실행하면 시드가 같으면 결과가 매번 같다는 것을 확인할 수 있습니다. 비밀번호나 암호 키를 만들 때는 random이 아니라 전용 secrets 모듈을 사용하세요.

LaTeX 등 수식 언어로 쓰는 법(복사 가능)

정수 난수가 각 값이 될 확률(이산 균등분포)
P(X = k) = 1 / (b − a + 1)
P(X = k) = \frac{1}{b - a + 1}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>P</mi><mo>(</mo><mi>X</mi><mo>=</mo><mi>k</mi><mo>)</mo>
    <mo>=</mo>
    <mfrac>
      <mn>1</mn>
      <mrow><mi>b</mi><mo>&#x2212;</mo><mi>a</mi><mo>+</mo><mn>1</mn></mrow>
    </mfrac>
  </mrow>
</math>
P(X = k) = 1/(b - a + 1)
1/(b - a + 1)
p := 1/(b - a + 1);
p = 1/(b - a + 1);
P(X = k) = 1/(b - a + 1)
소수 난수가 나오기 쉬운 정도(연속 균등분포의 확률밀도)
f(x) = 1 / (b − a)
f(x) = \frac{1}{b - a}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo>
    <mo>=</mo>
    <mfrac>
      <mn>1</mn>
      <mrow><mi>b</mi><mo>&#x2212;</mo><mi>a</mi></mrow>
    </mfrac>
  </mrow>
</math>
f(x) = 1/(b - a)
1/(b - a)
f := 1/(b - a);
f = 1/(b - a);
f(x) = 1/(b - a)
난수의 평균(균등분포의 기댓값)
E[X] = (a + b) / 2
E[X] = \frac{a + b}{2}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>E</mi><mo>[</mo><mi>X</mi><mo>]</mo>
    <mo>=</mo>
    <mfrac>
      <mrow><mi>a</mi><mo>+</mo><mi>b</mi></mrow>
      <mn>2</mn>
    </mfrac>
  </mrow>
</math>
E[X] = (a + b)/2
(a + b)/2
mean := (a + b)/2;
mean_x = (a + b)/2;
E[X] = (a + b)/2
0~1의 난수로 범위 안의 정수 난수를 만드는 변환
n = a + ⌊u × (b − a + 1)⌋
n = a + \lfloor u \times (b - a + 1) \rfloor
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>n</mi>
    <mo>=</mo>
    <mi>a</mi>
    <mo>+</mo>
    <mo>&#x230A;</mo>
    <mi>u</mi>
    <mo>&#xD7;</mo>
    <mo>(</mo><mi>b</mi><mo>&#x2212;</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo>
    <mo>&#x230B;</mo>
  </mrow>
</math>
n = a + |__ u xx (b - a + 1) __|
a + Floor[u*(b - a + 1)]
n := a + floor(u*(b - a + 1));
n = a + floor(u*(b - a + 1));
n = a + ⌊u × (b - a + 1)⌋
의사난수를 만드는 대표적인 방법(선형 합동법)
Xₙ₊₁ = (a·Xₙ + c) mod m
X_{n+1} = (a X_n + c) \bmod m
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <msub><mi>X</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub>
    <mo>=</mo>
    <mo>(</mo>
    <mi>a</mi><msub><mi>X</mi><mi>n</mi></msub>
    <mo>+</mo><mi>c</mi>
    <mo>)</mo>
    <mo>mod</mo>
    <mi>m</mi>
  </mrow>
</math>
X_(n+1) = (a X_n + c) mod m
Mod[a*x + c, m]
X[n + 1] := (a*X[n] + c) mod m;
x_next = mod(a*x + c, m);
X_(n+1) = (a X_n + c) mod m

ChatGPT 에게 물어서 계산하는 방법

당신은 난수 생성 도우미입니다. 다음 작업을 Python 코드를 실제로 실행해서 하고, 실행 결과의 숫자만을 근거로 답하세요(난수는 코드를 실행하지 않고는 만들 수 없으므로, 숫자를 추측하거나 지어내지 마세요).

1. 1~100의 정수 난수를 중복 없이 5개 생성하세요.
2. 그 5개를 오름차순으로 정렬하세요.
3. 0.2~112.5의 소수 난수를 소수점 아래 3자리로 1개 생성하세요.

사용한 코드와 실행 결과의 숫자를 보여 주세요.

사용법
  1. 1
    숫자 입력
    계산하고 싶은 숫자를 입력란에 입력합니다
  2. 2
    계산
    ‘계산’ 버튼을 누릅니다
  3. 3
    결과 확인
    계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
  DataChef의 특징
간단하고 무료
무료로 횟수 제한 없이 변환
전문 지식 없이도 직관적이고 간단하게 사용
회원가입 불필요
접속 즉시 바로 사용 가능
개인정보를 등록하지 않고도 이용할 수 있습니다
안전하고 안심
통신을 강력하게 암호화
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
빠른 속도
기다림 없는 쾌적한 표시 속도와 변환 속도
워터마크 없음
워터마크 없음
출처 표기 불필요
상업적 이용 가능
무료로 상업적 이용 가능
상업적 이용 허가 연락도 필요 없습니다