난수 생성기

원하는 범위에서 난수 하나, 목록, 또는 여러 숫자 세트를 생성하세요 — 모두 브라우저에서 바로, 암호학적으로 안전한 무작위성으로 생성되며 서버에는 전송되지 않습니다.

생성을 눌러 추첨하세요
옵션

빠르고 공정하게 난수를 얻는 방법이 필요하신가요? 이 무료 온라인 난수 생성기는 원하는 범위에서 숫자 하나 — 또는 숫자 전체 목록 — 를 생성합니다. 1부터 10까지의 간단한 범위부터 수십억에 이르는 범위까지 모두 가능합니다. "최소"와 "최대"에 최솟값과 최댓값을 설정하고, "생성 개수"로 필요한 숫자 개수를 정한 후 "결과 생성"을 누르세요. 두 경계 모두 결과에 포함되므로 1에서 10까지의 범위는 1과 10 모두를 생성할 수 있습니다.

모든 결과는 Web Crypto API(crypto.getRandomValues)를 사용하여 브라우저에서 직접 생성됩니다 — 이는 운영체제에서 제공하는 암호학적으로 안전한 무작위성 소스를 사용해 값을 생성합니다. 서버로는 아무것도 전송되지 않고, 서버에 어떠한 기록도 남지 않으며, 저희는 사용자의 숫자를 절대 볼 수 없습니다. 생성은 즉각적이고 비공개이며, 페이지가 로드된 후에는 느린 연결에서도 계속 작동합니다.

이 옵션들은 실제로 난수가 필요한 상황을 위해 만들어졌습니다. "중복 제외"를 켜면 어떤 숫자도 두 번 나오지 않습니다 — 추첨이나 경품 선정, 또는 중복 없이 사람들을 그룹으로 나눌 때 필요한 설정입니다. 500명의 참가자 중 20명의 당첨자가 필요하신가요? "최소"를 1로, "최대"를 500으로 설정하고, "중복 제외"를 켜고, "생성 개수"를 20으로 설정한 후 "결과 생성"을 누르세요. "정렬 순서"는 결과를 오름차순 또는 내림차순으로 정렬하며, 버튼 하나로 모든 결과를 한 번에 복사할 수 있습니다. "결과 형식"을 "줄바꿈"에서 "공백으로 구분" 또는 "쉼표로 구분"으로 바꾸면 "세트 수"가 나타납니다: 한 번의 클릭으로 여러 개의 독립적인 추첨을 생성합니다 — 예를 들어 20번의 추첨 라운드를 위한 3개 숫자로 이루어진 20개 세트 — 그리고 "세트 간 중복 허용"은 같은 숫자가 여러 세트에 나타날 수 있는지를 결정합니다.

이 무작위성은 실제로 어떻게 생성될까요? 브라우저는 Math.random() 같은 JavaScript PRNG 대신 Web Crypto API를 통해 암호학적으로 안전한 무작위 값을 제공합니다. "결과 생성"을 누르면, 페이지가 crypto.getRandomValues로 무작위 값을 요청하고, 이를 사용해 선택한 범위 내의 숫자를 생성합니다. 이 무작위성은 운영체제에서 제공하는 암호학적으로 안전한 무작위성 소스를 기반으로 하므로, 페이지는 자체적인 시드(seed)나 의사 난수 시퀀스를 유지할 필요가 없습니다.

원시 값을 범위에 매핑하는 과정은 생성기들이 조용히 실수를 저지르는 지점이며, 이는 별도로 한 단락을 할애할 가치가 있습니다. 값을 범위 크기로 모듈로 연산하는 것은 가장 간단한 방법처럼 보이지만, 바로 그 방법이 편향된 것입니다: 범위 크기가 2^32를 정확히 나눌 수 없다면, 가장 작은 일부 숫자가 다른 숫자보다 약간 더 자주 나타납니다. 이 결함은 모듈로 편향(modulo bias)이라고 불리며, 이는 이론적인 것이 아니라 측정 가능한 것입니다. 대신 이 생성기는 범위의 가장 큰 정확한 배수를 넘어서는 값을 모두 버리고 새로운 값을 다시 뽑습니다 — 이 기법을 거부 샘플링(rejection sampling)이라고 합니다. 이는 몇 번의 추가 시도가 필요하지만, 그 대가로 정확한 보장을 얻습니다: "최소"와 "최대" 사이의 모든 숫자는 거의 같은 것이 아니라 정확히 동일한 확률을 가집니다.

무엇이 숫자를 진짜로 무작위로 만들까요? 이전 결과가 다음 결과에 대해 아무것도 알려주지 않을 때 숫자는 충분히 무작위입니다 — 그리고 실제로는 여기에 세 가지 수준이 있습니다. Math.random() 같은 일반적인 의사 난수 함수는 결정론적(deterministic) 알고리즘을 실행합니다: 내부 상태를 아는 사람은 누구나 전체 시퀀스를 재현할 수 있습니다 — 이는 프레젠테이션 슬라이드를 섞는 데는 괜찮지만, 결과를 예측할 수 없어야 하는 어떤 작업에도 적합하지 않습니다. 이 도구가 사용하는 암호학적으로 안전한 생성기 역시 알고리즘이지만, 안전한 시스템 무작위성 소스를 사용해 예측할 수 없는 값을 생성하며, 기존 출력만으로 다음 값을 실제로 예측하기 어렵도록 설계되었습니다. 대기 잡음이나 방사성 붕괴 같은 소스에서 나오는 물리적 무작위성은 이 두 가지와는 다른 별개의 범주이지만, 범위 내에서 숫자 하나를 뽑는 데는 실질적인 차이가 사라집니다. 바로 이것이 브라우저가 Math.random()을 개선하는 대신 별도의 crypto API를 제공하는 이유입니다: 둘은 서로 다른 문제를 해결하며, 결과가 누군가에게 중요할 때는 둘 중 하나만이 안전합니다.

실제로 무작위인 시퀀스는 인간의 눈에 무작위로 보이도록 설계되지 않았습니다. 1에서 10 사이의 숫자 열 개를 뽑아보면, 반복이나 7, 7, 8 같은 가까운 쌍, 또는 높은 숫자가 연속으로 나오는 짧은 구간을 자주 보게 될 것입니다 — 이 모든 것은 정상입니다. 진짜 무작위성은 예측할 수 있는 패턴이 없는 것이지, 눈에 고르게 보이는 것이 아닙니다: 각 추첨은 독립적이며, 이전 숫자는 이후 숫자에 전혀 영향을 미치지 않고, 어떤 숫자도 "차례"가 오는 법이 없습니다. 이와 반대로 생각하는 본능을 도박사의 오류(gambler's fallacy)라고 부르며, 바로 이 본능이 인간을 형편없는 난수 생성기로 만들기도 합니다 — 무작위 시퀀스를 직접 만들어보라고 하면, 우리는 반복을 피하고 실제 확률이 만들어내는 것보다 훨씬 더 고르게 값을 퍼뜨립니다. 의심스러울 정도로 깔끔해 보이는 결과는 인위적인 흔적이며, 진짜 무작위성은 오히려 덩어리를 만들어냅니다.

왜 이 난수 생성기를 선택해야 할까요?

난수는 대부분의 사람이 생각하는 것보다 훨씬 더 많은 곳에서 사용됩니다. 교사는 편애 없이 학생을 지목합니다. 스트리머와 마케팅 팀은 결과를 믿어야 하는 시청자들 앞에서 경품 이벤트와 추첨 당첨자를 뽑습니다. 플레이어는 잃어버린 주사위를 대신하거나 누가 먼저 할지를 정하며, 토너먼트는 출전 순서를 추첨합니다. 연구자는 무작위 표본을 선택해 연구 결과가 자원한 사람들을 넘어 더 넓게 적용되도록 합니다. 개발자는 테스트 데이터를 생성하고, 시뮬레이션을 위한 시드를 설정하며, QA 과정에서 식별자를 선택합니다. 이 모든 것의 공통점은 나중에 설명할 수 있는 무작위 선택 과정이라는 점입니다: 추첨이 암호학적 무작위성을 사용하고 전적으로 사용자의 기기에서 이루어지기 때문에, 누군가 의문을 제기하더라도 추첨 과정이 어떻게 진행되었는지 설명하고 기록할 수 있습니다.

이 생성기에는 알아두어야 할 몇 가지 현실적인 한계가 있습니다. "중복 제외" 모드는 범위에 있는 것보다 더 많은 숫자를 생성할 수 없습니다: 1과 10 사이에 20개의 고유한 값은 애초에 존재하지 않습니다. 추첨은 독립적이며 이전 결과가 이후 결과에 영향을 미치지 않으므로, 페이지를 새로고침해도 어떤 주기도 재설정되지 않습니다 — 애초에 여기에는 주기가 없기 때문입니다. 그리고 숫자가 암호학적으로 안전하더라도, 여기서의 추첨은 예측이 아니라 공정한 선택입니다: 공식 복권 추첨은 자체적인 물리적 또는 공인된 장비를 사용하며, 브라우저에서 계산된 그 어떤 것도 이와는 아무런 관련이 없습니다. 이러한 한계 안에서 보장은 매우 확고합니다 — 범위 내의 모든 숫자는 매 추첨마다 정확히 동일한 확률을 가집니다.

FAQ

이 무작위성은 암호학적으로 안전한가요?

이 도구는 브라우저의 Web Crypto API(crypto.getRandomValues)를 사용하며, 이는 운영체제의 암호학적으로 안전한 소스에서 무작위성을 가져옵니다. 단순한 의사 난수 함수와 달리, 그 출력은 실질적으로 예측할 수 없도록 설계되었으며, 거부 샘플링은 범위 내 모든 숫자가 가장 작은 숫자로 치우치지 않고 동일한 확률을 갖도록 보장합니다.

특정 범위에서 난수를 어떻게 생성하나요?

"최소" 필드에 가능한 가장 작은 값을, "최대" 필드에 가장 큰 값을 입력한 후 "결과 생성"을 누르세요. 두 경계 모두 결괏값에 포함되어 있어, 1부터 10까지의 범위에서 1과 10 둘 다 나올 수 있습니다.

한 번에 여러 개의 난수를 생성할 수 있나요?

네. "생성 개수" 필드에 필요한 수량(최대 1000)을 입력하면, 생성기가 한 번의 클릭으로 전체 목록을 준비합니다. 그런 다음 복사 버튼으로 모든 결과를 클립보드에 복사하거나, 파일로 저장할 수 있습니다.

한 번에 여러 숫자 세트를 생성할 수 있나요?

네. "결과 형식"을 "줄바꿈"에서 "공백으로 구분" 또는 "쉼표로 구분"으로 바꾸면 "세트 수" 필드가 나타납니다. 필요한 독립적인 추첨 수를 입력하세요 — 예를 들어 20번의 추첨 라운드를 위한 3개 숫자로 이루어진 20개 세트 — 그런 다음 다른 세트 간에 중복을 허용할지 선택하세요.

생성된 숫자를 정렬할 수 있나요?

네. "정렬 순서"를 사용해 각 목록을 오름차순 또는 내림차순으로 정렬하거나, "없음"으로 두어 숫자가 생성된 순서를 그대로 유지할 수 있습니다.

숫자가 중복되지 않게 하려면 어떻게 하나요?

"중복 제외" 스위치를 켜세요. 켜져 있으면 목록의 모든 숫자가 서로 다르도록 보장됩니다 — 추첨, 경품 뽑기, 또는 사람들을 그룹으로 나누는 데 적합합니다. 생성 개수는 범위 크기를 초과할 수 없다는 점을 기억하세요: 1과 10 사이에서 20개의 고유한 숫자를 생성할 수는 없습니다.

왜 같은 숫자가 계속 반복되나요?

독립적인 추첨은 반복될 수 있으며, 그것이 바로 무작위성의 실제 모습이기 때문입니다. 각 추첨은 그 이전의 모든 추첨을 무시하므로, 1에서 10까지의 범위에서 같은 숫자가 연속으로 두 번 나올 확률은 매번 10분의 1입니다 — 이는 흔한 일이지 오류가 아닙니다. 중복 없는 목록이 필요하다면 "중복 제외"를 켜세요 — 이는 결함을 고치는 것이 아니라 의도적으로 추첨을 제한하는 것입니다.

왜 무작위 시퀀스가 무작위로 보이지 않을까요?

진짜 무작위성은 예측할 수 있는 패턴이 없는 것이지, 눈에 고르게 보이는 것이 아니기 때문입니다. 사람들은 무작위 결과가 깔끔하게 퍼져 있을 것이라고 기대하므로, 7, 7, 8 같은 덩어리, 반복, 짧은 구간이 오류처럼 느껴지지만, 사실 그것이 바로 확률이 만들어내는 것입니다. 인간의 눈에 깔끔해 보이는 시퀀스는 대체로 실제로는 무작위가 아니었던 시퀀스입니다.

브라우저에서 생성된 무작위성을 신뢰할 수 있나요?

네, 여기서처럼 Web Crypto API에서 나온 것이라면 신뢰할 수 있습니다. crypto.getRandomValues는 Math.random() 같은 JavaScript PRNG가 아니라 운영체제의 무작위성을 사용해 암호학적으로 안전한 값을 제공합니다. 중요한 작업에는 Math.random()을 의심해야 합니다: 이는 결정론적(deterministic)이며 예측 불가능하도록 설계된 적이 없습니다.

난수를 예측하거나 조작할 수 있나요?

정상적인 사용 환경에서는 이전 결과만으로 다음 결과를 실제로 예측할 수 없습니다. 값은 운영체제의 암호학적으로 안전한 무작위성 소스에서 나오며, 추첨은 전적으로 사용자의 기기에서 이루어집니다 — 조작할 서버도 없고, 누군가 가로챌 요청도 없습니다. 저희 또한 결과를 절대 보지 않으므로, 사용자의 결과에 영향을 미칠 수 없습니다.

경품 이벤트나 추첨 당첨자를 뽑는 데 적합한가요?

적합합니다. 각 참가자에게 번호를 하나씩 부여하고, 해당 범위에서 결과를 하나 생성하면, 번호가 일치하는 참가자가 당첨됩니다. 소스가 암호학적으로 안전하고 추첨이 전적으로 사용자의 기기에서 이루어지므로, 참가자가 결과에 의문을 제기하더라도 그 무작위 선택 과정이 어떻게 이루어졌는지 설명하고 기록할 수 있습니다. 복권 번호를 선택하는 용도로는, 이 도구는 예측 도구가 아니라 무작위 선택 도구로 작동합니다: 공식 복권 추첨은 이 도구와 완전히 별개입니다.

페이지를 새로고침하면 무작위성이 바뀌나요?

아니요, 그럴 필요도 없습니다. 각 추첨은 이미 운영체제에 새로운 값을 요청하므로, "결과 생성"을 열 번 연속으로 누르든 누를 때마다 페이지를 다시 불러오든 결과는 항상 독립적입니다. 다시 시작해야 할 주기도 없고 오래되는 상태도 없습니다 — 새로고침은 화면에 표시된 결과만 지울 뿐입니다.

이 생성기는 무료인가요, 그리고 제 숫자를 저장하나요?

이 도구는 가입 없이 완전히 무료입니다. 모든 숫자는 브라우저에서 로컬로 생성되며 기기를 벗어나지 않으므로, 저희가 원하더라도 결과를 저장하거나 볼 수 없습니다.