직접 만든 양자 난수 생성기로 점을 보는 웹앱, 'A Quantum Magic 8-Ball'
게시판: 뉴스 | 작성자: cli-bot | 작성일: 2026-06-29T20:01:36.848Z

### 직접 만든 양자 난수 생성기로 점을 보는 웹앱, 'A Quantum Magic 8-Ball'

연구자이자 엔지니어인 데이비드 노엘 응(David Noel Ng) 씨가 '광자가 어느 검출기에 도달하는가'라는 양자 측정 결과를 이용해 난수를 생성하는 장치를 직접 만들고, 그 난수로 점괘를 선택하는 웹 애플리케이션 'A Quantum Magic 8-Ball'을 개발했습니다.
Building the Beam Universe Splitter I: A Quantum Magic 8-Ball | David Noel Ng
[https://dnhkng.github.io/posts/building-the-beam-universe-splitter/](https://dnhkng.github.io/posts/building-the-beam-universe-splitter/)
A Quantum Magic 8-Ball은 [위 사이트 하단](https://dnhkng.github.io/posts/building-the-beam-universe-splitter/#the-quantum-magic-8-ball)에 위치해 있습니다. 입력창에 묻고 싶은 내용을 적고 'ASK' 버튼을 클릭합니다.

중앙의 거대한 구체 주위에 배열된 5개의 검은 공 안에서 0과 1이 깜빡입니다.

'Outlook Good.(전망이 좋습니다)'이라는 메시지가 나타납니다. 다만 이 답변은 AI가 입력 내용을 분석한 것이 아니라, 미리 준비된 20가지 답변 중 하나를 무작위로 표시한 것입니다.

Magic 8-Ball은 당구공 8번과 비슷한 플라스틱 공 모양 장난감으로, 내부에 액체와 다양한 메시지가 적힌 정이십면체 주사위가 들어 있습니다. 점을 묻고 나서 공을 잘 흔든 뒤, 공의 작은 창을 들여다보면 주사위가 떠오르며 메시지를 보여주는 방식입니다. 1946년에 발명된 Magic 8-Ball은 미국에서 역사 깊은 장난감이며, 영화에도 등장합니다.
[Don't count on it! - YouTube](https://www.youtube.com/watch?v=y7jncW7p9Nc)
A Quantum Magic 8-Ball에서 답변을 선택하는 난수는 응 씨가 직접 만든 양자 난수 생성기에서 가져옵니다. 질문란에 입력한 내용은 양자 난수 생성기로 전송되지 않으며, 'ASK' 버튼을 클릭하는 동작을 계기로 장치에서 처리된 난수를 받아옵니다. 앱의 역할은 받은 난수에 20가지 정형화된 답변을 매핑하여 표시하는 것뿐입니다.

답변 선택에는 0과 1로 이루어진 5비트 난수를 사용합니다. 5비트로 표현 가능한 수는 0~31까지 32가지이지만, Magic 8-Ball의 답변은 20개뿐이므로 0~19를 답변에 할당하고 20~31이 나오면 버리고 다음 5비트를 읽어옵니다. 이 '기각 샘플링(Rejection Sampling)' 과정을 통해 20가지 답변이 모두 동일한 확률로 선택되도록 합니다.
난수를 생성하는 장치는 광자가 어느 PMT(광전자 증배관)에서 검출되었는지를 동전의 앞뒤로 간주하는 방식입니다. 자외선 LED와 형광을 이용한 빛을 약하게 만들어, 자외선 영역에서 사용 가능한 50:50 빔 스플리터에 쏩니다. 빔 스플리터를 투과한 빛은 PMT A로, 반사된 빛은 PMT B로 전달되며, PMT A가 반응하면 0, PMT B가 반응하면 1로 기록됩니다.

광전자 증배관은 매우 약한 빛을 감지하여 전기 신호로 변환하는 부품입니다. 하지만 이 장치는 단일 광자를 하나씩 확실하게 발생시키는 광원을 사용하는 것이 아니라, LED와 형광으로 만든 빛을 충분히 약하게 하여 사용합니다. 따라서 여러 광자가 가까운 시간에 도착할 가능성이 있으며, PMT의 반응을 그대로 0과 1로 바꾸기만 하면 편향이나 단시간 상관관계가 남을 우려가 있습니다.
두 대의 PMT는 원래 단백질 구조 분석에 사용되던 장치에서 분리한 [하마마츠 포토닉스](https://www.hamamatsu.com/jp/ja.html) 제품입니다. 원래 장치에는 파장에 따라 빛을 두 방향으로 나누는 [다이크로익 미러](https://en.wikipedia.org/wiki/Dichroic_mirror)가 장착되어 있었지만, 응 씨는 이를 자외선용 50:50 하프 미러로 교체했습니다. 단백질 상태를 조사하기 위한 광학계를 광자의 경로를 무작위로 읽는 장치로 개조한 것입니다.

A Quantum Magic 8-Ball의 난수 생성기에는 'Universe Splitter(우주 분할기)'라는 이름이 붙여졌습니다. 응 씨에 따르면 이는 양자 측정 결과마다 우주가 분기한다는 다세계 해석을 의식한 표현이며, 물론 실제로 우주를 분기시키는 장치는 아닙니다.
각 PMT가 출력하는 전기 신호는 ADC와 FPGA를 탑재한 'Red Pitaya'라는 보드로 입력됩니다. FPGA는 설정된 임계값을 초과하는 전압 상승을 광자 검출로 판단하고, 미리 정해진 짧은 시간 내에 한쪽 PMT만 반응한 경우에 비트를 기록합니다. 두 대가 거의 동시에 반응한 이벤트는 여러 광자가 동시에 도착했을 가능성 등을 배제하기 위해 기각합니다. 또한, 한 번 검출을 수락한 직후에는 일정 시간 동안 두 입력을 모두 무시하여 PMT의 후속 펄스나 회로 신호의 흔들림이 다음 난수에 섞이는 것을 방지합니다.
한쪽 PMT의 감도가 높거나 빔 스플리터의 분기 비율이 정확히 반반이 아닌 경우, 원시 0과 1에는 편향이 생깁니다. 응 씨는 비트를 2개씩 묶어 편향을 제거하는 폰 노이만(Von Neumann) 방식에서 버려지는 정보를 재귀적으로 활용하는 페레스(Peres) 방식을 사용하여 편향을 줄였습니다. 이후, 페레스 방식을 통과한 1024비트를 토플리츠(Toeplitz) 추출기로 896비트로 압축하여 남은 편향이나 상관관계를 더욱 억제했습니다. 이 처리는 난수를 비밀화하기 위한 것이 아니라, 물리 장치 자체의 불완전성을 고려하여 출력을 보다 균등한 난수에 가깝게 만들기 위한 것입니다.

생성된 난수열은 NIST 통계 테스트 스위트(NIST Statistical Test Suite)를 사용하여 검증되었습니다. 더 강하게 압축하는 보수적인 설정에서는 6억 비트, 압축을 완화하여 출력을 늘리는 설정에서는 10억 비트를 대상으로 통계 테스트를 실시했으며, 후자의 경우에도 체계적인 문제는 발견되지 않았다고 응 씨는 말합니다.
다만, 이러한 테스트를 통과했다고 해서 난수가 양자에서 비롯되었거나 암호 용도로 안전하다는 것을 완전히 증명하는 것은 아닙니다. 최종 설정에서의 출력 속도는 초당 약 2.28kbit로, 점괘 하나를 선택하기에는 충분한 속도입니다.
FPGA에서 출력된 난수는 Red Pitaya에서 작동하는 '[qrngd](https://qrng.anu.edu.au/)'라는 소프트웨어가 읽어 TCP 포트 5000을 통해 외부로 제공합니다. 난수를 저장하는 버퍼는 오래된 순서가 아닌 새로운 값부터 꺼내도록 설계되어, 오래전에 생성된 데이터보다 최근 난수를 대화형 용도에 우선적으로 전달할 수 있습니다. 공개 서버의 REST API는 이 난수를 웹 앱으로 전달하여 답변 선택에 사용합니다.

한편, 응 씨는 "정이십면체 주사위에 준비된 20가지 답변으로는 복잡한 질문에 대응할 수 없다"며, 향후 자연어로 결과를 전달하는 방식을 다룰 계획이라고 밝혔습니다.
---
**원문**: [自作の量子乱数生成器を使った占いアプリ「A Quantum Magic 8-Ball」](https://gigazine.net/news/20260629-a-quantum-magic-8-ball/)
**출처**: GIGAZINE (2026-06-29)
**번역**: AI 자동 번역+윤문