[Random] Random

유사 난수

유사 난수는 난수 알고리즘과 시드 값으로 난수를 생성한다. 혹은 경우에 알고리즘 대신 열 잡음, 광전자 등 신호의 노이즈를 사용한 하드웨어 랜덤 번호 생성기를 사용하기도 한다. 유사 난수를 사용할 경우 시드 값에 주의해야 한다. 항상 고정된 시드 값을 사용하거나 일정한 규칙성이 있는 시드 값(타임 스탬프)를 사용하게 된다면 난수를 예측 가능하게 만드는 위험이 존재한다.

안전한 난수

안전한 난수는 유사 난수보다 생성 속도가 느리지만 시드 값을 사용하지 않아서 예측이 불가능한 장점이 있다.

셔플 백

셔플 백은 발생할 수 있는 모든 가능성을 하나의 컨테이너에 삽입해 제어하는 방법이다. 가령 확률 30%의 뽑기에서는 컨테이너에 3개의 당첨 카드와 7개의 꽝 카드를 넣고 섞는 방법이다. 이런 셔플 백은 공정한 제어가 가능하지만 전체 요소가 너무 많거나 확률이 희박할 경우 모든 경우의 수를 담기 위해 컨테이너가 커지는 단점이 있다.

난수 언제 쓸까?

  1. 식별자를 생성하는 경우
  2. OTP 또는 액세스 토큰을 생성하는 경우
  3. 게임의 규칙으로 사용하는 경우
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/08/23/Etc/random/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.