도구스개발

Xorshift 난수 생성기 계산기

시드 하나로 시프트+XOR 세 번만 반복하는 Xorshift 의사난수 생성기의 출력 수열을 계산하고, 역연산으로 원래 시드가 복원되는지 검증합니다.

xorshift32 다음 상태

270369

마사글리아 논문의 32비트 대표 상수 (13, 17, 5)

출력 수열

2703696763468926474354613075996952398689233745495504632435482435756210
시드1
역연산으로 되돌린 값1
라운드트립 검증일치 — 정확히 복원됨
출력 수열 마지막 값에 역연산을 8번 거꾸로 적용하면 정확히 원래 시드로 돌아옵니다. 시프트-XOR 연산은 되돌릴 수 있는(가역) 연산이라, 이 라운드트립이 항상 성립해야 올바르게 구현된 것입니다. 이 성질이 깨지면 Xorshift가 보장하는 최대주기 자체가 성립할 수 없습니다.
xorshift32은 시프트+XOR 세 번만 반복합니다. 곱셈·나눗셈이 없어 하드웨어로 매우 빠르지만, 선형 연산이라 연속된 출력 몇 개만 있으면 내부 상태를 역산할 수 있습니다. 통계 시뮬레이션·게임 등 비암호 용도로만 써야 합니다.

사용 방법

  1. 132비트 또는 64비트 버전을 고릅니다.
  2. 2시드값을 넣습니다.
  3. 3출력 수열과, 역연산으로 시드가 정확히 복원되는지(라운드트립)를 확인합니다.

자주 묻는 질문

상태 x 하나에 x ^= x << a, x ^= x >> b, x ^= x << c 세 번의 시프트+XOR 연산만 반복합니다. 곱셈·나눗셈이 없어 하드웨어로 매우 빠르게 계산됩니다.

조지 마사글리아(George Marsaglia)가 2003년 논문에서 32비트 워드에 대해 전체 주기(2³²−1)를 보장하는 163개의 「최대주기 삼중항」 중 하나로 제시한 값입니다. 아무 숫자나 넣으면 주기가 훨씬 짧아질 수 있습니다.

특정 시드의 출력값을 외운 정답과 대조하는 대신, 이 연산이 되돌릴 수 있는(가역) 연산이라는 성질을 직접 계산해서 보여줍니다. 출력에 역연산을 거꾸로 적용하면 정확히 원래 시드로 돌아오는데, 이는 올바르게 구현된 시프트-XOR 연산이라면 반드시 성립해야 하는 수학적 성질입니다.

LCG는 곱셈·덧셈·나머지 연산(X(n+1) = aX(n)+c mod m)을 쓰는 반면, Xorshift는 시프트와 XOR만 씁니다. 계산이 더 가볍고 하위 비트 결함(LCG의 고질적 문제)이 없지만, 통계적 품질과 예측 가능성 면에서는 각자 다른 약점이 있습니다.

안 됩니다. Xorshift는 선형 연산이라 연속된 출력 몇 개만 있으면 내부 상태를 역산할 수 있습니다. 통계 시뮬레이션·게임 등 비암호 용도로만 써야 합니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 알고리즘 정의와 32비트(13,17,5)·64비트(13,7,17) 상수는 George Marsaglia, "Xorshift RNGs"(Journal of Statistical Software, 2003) 원 논문 및 여러 구현 사례를 WebSearch로 교차 확인했습니다(2026-09-05).
  • 특정 시드의 출력값을 외부 정답지와 대조하는 대신, 시프트-XOR 각 단계가 가역 연산이라는 것을 직접 구현해 라운드트립으로 검증했습니다. 이 성질이 깨지면 마사글리아가 주장하는 최대주기 자체가 성립할 수 없으므로, 구현 정확성을 확인하는 직접적인 방법입니다.
  • 비암호용 의사난수 생성기입니다. 통계적 편향이 없다는 뜻이 아니며, 보안이 필요한 곳에는 절대 쓰면 안 됩니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 5일 · 결과는 참고용 추정치입니다.