디지털·가전제품

붕어빵도사

붕어빵도사

채택률 높음

100% 정해진 규칙대로만 작동하는 컴퓨터가 어떻게 로또나 게임 확률 같은 '완벽한 랜덤(난수)'을 만들어내나요?

컴퓨터는 0과 1로 이루어진 코드를 통해 입력된 규칙대로만 결과를 도출하는 결정론적 기계로 알고 있습니다. 그런데 우리가 게임을 할 때 아이템 강화 확률이나 로또 번호 추첨기를 돌리면 매번 예측할 수 없는 무작위의 숫자(랜덤)가 튀어나오는데요. 스스로 무작위를 창조할 수 없는 컴퓨터가 어떤 수학적 알고리즘이나 외부 변수를 사용해서 인간이 예측 불가능한 '난수'를 생성해 내는 것인지 컴퓨터공학적 원리가 궁금합니다.

2개의 답변이 있어요!

  • 난수(Random Number) 생성 프로그램은 크게 의사 난수 생성기(PRNG)와 진정 난수 생성기(TRNG) 두 가지 방식

    이 있습니다

    의사 난수 생성기는 숫자를 만드는 알고리즘을 매우 복잡하게 만들어서

    인간 뇌로는 추측이 좀 힘들게 만드는 방식입니다.

    하지만 결국은 정해진 알고리즘을 사용하기 때문에 지식과 노력이 있다면 얼마든지 리버스 엔지니어링이 가능 하죠

    진성 난수 생성기는, 현실을 이용하는 것입니다.
    마우스 움직임, 키보드 입력 시간 간격, 대기 노이즈, 심지어 방사능 붕괴까지

    현실에 존재하는 다양한 난수를 측정하는 센서를 마련해 두고

    그것을 실시간 입력하는 방식이죠.

    여러 종류의 센서를 준비한다면 사실상 추적 불가능합니다

    물론 센서 오류등의 문제가 있고, 센서 종류가 많을 수록 느려지죠

    마지막으로

    현재 활용중인 가장 최신 기술인

    양자난수생성이 있습니다
    진성 난수 생성에 양자를 활용하는 것이죠

    왜 양자가 난수인지 설명하는 것은 정말 어려워서 전공자 아니면 어렵기 때문에 생략합니다

    채택 보상으로 67베리 받았어요.

    채택된 답변
  • 컴퓨터는 사실 완벽한 무작위를 스스로 만들지 못하며, 특정 공식을 이용해 무작위처럼 보이는 '의사 난수'를 생성합니다. 이 방식은 미리 정해진 '시드)'라는 초기값에 복잡한 수학 방정식을 적용해 숫자 배열을 출력하는데, 시드값이 같으면 결과도 항상 같다는 특징이 있습니다. 그래서 더 완벽한 랜덤을 위해 컴퓨터는 CPU의 온도 변화, 사용자의 마우스 움직임, 현재 시각의 밀리초 같은 예측 불가능한 외부의 물리적 변수를 시드로 활용합니다. 진정한 의미의 난수가 필요할 때는 방사능 붕괴나 열 잡음 같은 자연계의 불규칙한 신호를 수집하는 하드웨어 난수 생성기를 사용하여 인간이 예측할 수 없는 결과를 도출합니다.