본문으로 건너뛰기
CalcMax

난수 생성기

범위: 1 – 200

범위: 0 – 4,294,967,295

계산 결과

63, 1, 53, 99, 97

뽑힌 숫자

가능한 값
100
숫자가 하나 이상 겹칠 확률
9.65%

난수 생성기는 정한 범위 안의 정수 목록을 시작점 하나에서 만들어 냅니다. 범위와 개수, 그리고 시작할 난수 시드를 넣으면 정확히 그만큼의 정수를 돌려주는데, 같은 시드를 쓰면 언제나 같은 목록이 나오므로 남에게 건네주고 그대로 재현해 보게 할 수 있는 목록이 됩니다. 중복 허용을 끄면 결과가 수열이 아니라 선택이 되어 같은 값이 두 번 나올 수 없고, 켜 두면 각 자리가 서로 독립인 뽑기가 되어 주사위나 추첨기, 다시 나올 수도 있는 섞인 재생 목록에 맞는 정직한 모형이 됩니다. 랜덤 숫자를 뽑는 이 페이지는 범위가 담고 있는 값의 수와, 중복을 허용했다면 겹칠 확률까지 함께 보고합니다. 중복 없는 난수가 필요할 때와 그냥 난수가 필요할 때의 차이가 이 스위치 하나이고, 시드 고정이 이 페이지를 일회용 결과가 아니라 검증할 수 있는 목록으로 만듭니다.

공식

next = (state + 0x6D2B79F5)를 곱셈-시프트로 섞음 → value = minimum + ⌊next × (maximum − minimum + 1)⌋

seed
난수 발생기의 시작 상태이며 0부터 4294967295까지의 정수입니다. 그 자체가 무작위의 원천은 아니고 수열이 시작하는 지점이며, 같은 시드가 언제나 같은 목록을 주는 이유가 바로 이것입니다
state
숫자 하나마다 한 번씩 갱신되는 진행 상태입니다. 갱신은 상태를 고정된 상수와 몇 번의 곱셈-시프트로 섞는데, 이 섞기가 연속한 값들을 서로 무관해 보이게 만들고, 단순화한다면 가장 먼저 무너질 단계입니다
minimum, maximum
범위의 양 끝이며 둘 다 포함됩니다. 범위의 너비가 난수에 곱해지는 값이라서 범위 안의 모든 정수가 같은 확률을 갖습니다
⌊ ⌋
내림입니다. 발생기는 [0, 1) 사이의 소수를 만들고, 내림이 그것을 범위 안의 정수 하나로 바꿉니다
count
만들 숫자의 수이며 200까지입니다. 중복을 끄면 범위의 너비를 넘을 수 없습니다. 선택은 그 재료가 되는 통보다 길 수 없기 때문입니다

한 개의 수가 아니라 목록이 필요할 때 쓰세요. 손으로 확인할 표본, 실행할 때마다 같아야 하는 시험 자료, 사람들 앞에서 다시 돌려 볼 수 있어야 하는 추첨, 자리 채우기용 가짜 데이터가 그렇습니다. 시드를 고정할 수 있다는 점이 언어에 딸려 오는 난수 함수 대신 이 페이지를 고르는 이유입니다. 시드는 일회용 결과를 공유하고, 다시 확인하고, 서로 따질 수 있는 것으로 바꿔 줍니다. 같은 항목이 두 번 나오면 안 될 때는 중복 허용을 끄세요. 복권 추첨, 목록에서 뽑는 표본, 섞은 순서가 모두 그 모양입니다. 맞지 않는 자리도 둘입니다. 예측할 수 없는 수가 필요한 곳에는 쓸 수 없으니 알아낼 수 있으면 안 되는 일은 여기 두지 마세요. 그리고 실제 모집단의 통계적 표본을 대신하지도 못합니다. 이 페이지는 모집단에 대해 아무것도 모르고 범위에 대해서만 알기 때문입니다.

계산 예시

  1. 1부터 100까지에서 다섯 개, 그리고 다시 같은 다섯 개

    1. 1부터 100까지의 범위는 서로 다른 값 100개를 담으므로 각 뽑기는 100개 중 하나입니다
    2. 시드 1이 시작 상태를 정하고, 다섯 개의 숫자가 각각 그 상태를 한 번씩 갱신합니다
    3. 각 소수를 1부터 100 사이로 내림하면 63, 1, 53, 99, 97이 그 순서대로 나옵니다

    이 다섯 개는 우연도, 저장된 표도 아닙니다. 시드 1이 만들어 내는 값이고, 시드 칸에 1을 다시 넣으면 정확히 그대로 재현됩니다. 9.65%는 이번 뽑기에 대한 말이 아니라 범위와 개수에 대한 말이라는 점을 보세요. 100개 가운데 다섯 번을 뽑으면 그중 둘이 겹칠 확률이 10분의 1에 조금 못 미치는데, 이 목록의 두 값이 실제로 겹치는지와는 상관이 없습니다. 시드를 7로 바꾸면 그 비율은 그대로인 채 목록만 완전히 달라지고, 패널의 어느 부분이 무작위이고 어느 부분이 산수인지 가장 깨끗하게 보여 주는 방법입니다.

  2. 1부터 49까지에서 여섯 개, 중복 금지

    1. 통에는 49개의 값이 있고 여섯 개를 되돌려 넣지 않고 뽑습니다
    2. 새 숫자는 통이 아직 내주지 않은 값이 나올 때까지 다시 뽑히므로, 같은 값이 두 번 나올 수 없습니다
    3. 만들어진 순서대로 읽으면 23, 16, 33, 31, 8, 11입니다

    중복 허용을 꺼도 27.26%는 변하지 않는데, 이것이 이 수를 이 예시 옆에 보고하는 이유입니다. 49개에서 여섯 번을 뽑을 때 중복을 허용했다면 겹쳤을 확률이고, 금지했는지와 무관하게 같습니다. 큰 개수에서 중복 없는 뽑기가 비싸지는 이유도 이것입니다. 49개에서 여섯 번이면 제한 없는 뽑기의 4분의 1이 넘게 무언가를 겹치고, 365일에서 23명을 뽑으면 절반을 넘습니다. 숫자는 정렬되지 않고 뽑힌 순서대로 남으므로, 같은 시드와 같은 설정이 언제나 같은 목록을 재현합니다.

  3. 값이 하나뿐인 범위

    1. 범위가 정확히 한 개의 값을 담으므로 모든 뽑기가 그 값입니다
    2. 겹칠 확률은 네 번의 뽑기가 겹칠 확률이고, 통이 하나면 반드시 겹칩니다
    3. 결과는 7, 7, 7, 7입니다

    난수 생성기가 무작위이기를 그만두고 상수가 되는 경계이고, 무엇이든 누르기 전에 출력이 완전히 예측되는 유일한 경우라서 기억해 둘 값어치가 있습니다. 중복 없는 모드의 경계이기도 합니다. 같은 범위에서 중복 없이 두 개를 요청하는 것은 짧은 목록이 아니라 불가능한 요청이고, 페이지는 조용히 한 개를 돌려주는 대신 그렇게 말합니다.

한계

이 숫자들은 알아낼 수 없어야 하는 일에는 쓸 수 없습니다. 이 발생기는 여느 소프트웨어에 들어 있는 것과 같은 종류의 작고 빠른 시드 산술 수열이라서, 시드를 아는 사람은 목록 전체를 재현할 수 있고 값 몇 개를 알면 나머지를 계산해 낼 수 있습니다. 그래서 비밀번호와 키, 토큰, 일회용 코드, 돈이 걸린 추첨, 참가자가 결과를 예측하거나 복원할 수 있으면 안 되는 모든 자리에서 빠집니다. 그런 곳에는 암호학적 난수원만이 정답입니다. 겹칠 확률도 지금 보고 있는 목록에 대한 주장이 아닙니다. 그 크기의 뽑기가 그 통에서 적어도 한 쌍은 겹칠 확률을, 뽑기가 독립이고 균등하다고 가정해 계산한 값이며, 중복을 허용했는지와 상관없이 보고됩니다. 실용적인 의미가 사람을 자주 넘어뜨리는데, 겹침은 통 크기의 제곱근만 되어도 충분히 일어나므로 365일에서 23명만 뽑아도 반반을 넘습니다. 그리고 개수는 한 번에 200까지이고, 개수가 통보다 커지면 중복 없는 뽑기는 불가능합니다.

자주 묻는 질문

이 숫자를 복권이나 비밀번호, 보안 토큰에 써도 되나요?
안 됩니다. 이 발생기는 여느 소프트웨어가 쓰는 작은 시드 산술 수열이고 암호학적이지 않습니다. 시드에서 목록 전체가 재현되고, 값 몇 개에서 나머지가 계산됩니다. 참가자가 결과를 예측하거나 복원할 수 있으면 안 되는 일, 곧 돈이 걸린 추첨과 비밀번호, 키, 토큰, 일회용 코드에는 암호학적 난수원이 필요합니다. 추첨과 표본, 게임, 시험 자료처럼 재현성이 새는 구멍이 아니라 기능인 자리에는 이 페이지가 맞는 도구입니다.
시드는 무엇을 하는 것이고, 왜 언제나 같은 숫자가 나오나요?
시드는 수열이 시작하는 상태라서 같은 시드가 언제나 같은 목록을 냅니다. 이것은 의도된 것입니다. 결과를 재현할 수 있게 만들어 주어서, 표본을 남에게 건넬 때나 사람들 앞에서 추첨을 다시 돌릴 때, 시험 자료가 흔들리지 않게 할 때 필요한 성질입니다. 시드를 바꾸면 같은 설정에서 다른 목록이 나옵니다. 실행할 때마다 다른 숫자를 원하면 실행 사이에 시드를 바꾸세요. 입력한 값은 결과와 함께 기록되므로 마음에 든 목록은 언제든 되찾을 수 있습니다.
중복을 허용하면 왜 같은 값이 다시 나올 수 있나요?
각 뽑기가 독립이기 때문입니다. 중복을 허용하면 자리마다 다른 자리가 무엇을 뽑았는지와 무관하게 범위 안의 값 하나를 고르는데, 이것이 공을 다시 넣는 주사위나 추첨기에 맞는 정직한 모형입니다. 패널의 겹칠 확률은 적어도 한 쌍이 겹칠 확률 그대로이고, 100개에서 다섯 번이면 약 9.65%, 365일에서 23명을 뽑으면 50%를 넘습니다. 통 크기의 제곱근만 되어도 겹침이 흔해지는 이 성질을 생일 문제라고 부릅니다. 같은 값이 두 번 나오면 안 될 때는 중복 허용을 끄세요. 추첨, 목록에서 뽑는 표본, 섞은 순서가 그 모양입니다.
중복을 금지하면 겹칠 확률이 작아지나요?
아니요, 그리고 패널이 일부러 같은 수를 계속 보여 줍니다. 그 수는 스위치를 넘길 때 실제로 묻는 질문, 곧 중복이 허용되었다면 겹쳤을 확률이 얼마였는지에 답합니다. 1부터 49까지에서 여섯 개면 27.26%라서, 중복을 금지하는 것은 이론적인 위험이 아니라 실제 위험을 없애는 일입니다. 개수가 클 때 중복 없는 뽑기가 느려지고 결국 불가능해지는 이유도 설명해 줍니다. 개수가 범위의 값 수를 넘으면 유효한 답이 아예 없고, 페이지는 짧은 목록을 돌려주는 대신 그렇게 말합니다.
한 번에 몇 개까지, 어느 범위에서 만들 수 있나요?
한 번에 200개까지이고, 범위의 양 끝은 정수여야 하며 최솟값이 최댓값보다 클 수 없습니다. 값 자체는 음수여도 되므로 −50부터 50까지도 괜찮습니다. 정수가 아닌 끝값은 반올림하지 않고 거부합니다. 중복을 금지한 상태에서 소수가 섞인 범위를 뽑으면 중복 금지 규칙이 빈 조건이 되고, 자기 설정을 조용히 무시하면서 그럴듯해 보이는 목록은 오류 메시지보다 나쁘기 때문입니다.
숫자가 정렬되어 나오나요?
아니요, 뽑힌 순서대로 인쇄되고 그 순서는 결과의 일부입니다. 정렬하면 같은 시드가 재현해야 하는 정보를 버리게 되고, 섞은 순서를 배정하거나 패를 나눠 주는 것처럼 자리가 의미를 갖는 일에서 문제가 됩니다. 정렬된 선택이 필요하면 목록을 복사한 뒤 직접 정렬하세요. 뽑기 자체는 시드가 만들어 낸 순서를 그대로 지킵니다.

참고 문헌

관련 계산기