의사난수 이벤트와 메서드

Python으로 배우는 이산 사건 시뮬레이션

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

프로세스(또는 사건) 랜덤화

랜덤화란?

  • 어떤 것을 무작위로 만드는 과정
  • 여기서는 사건(또는 프로세스)을 무작위화
  • 비결정적 프로세스 시뮬레이션에 유용

참고: 컴퓨터는 설계상 완전한 난수를 생성할 수 없습니다.

  • 생성기의 무작위성을 높이기 위해 현재 시간 등 외부 변수를 자주 사용합니다.
Python으로 배우는 이산 사건 시뮬레이션

진정한 난수 vs. 의사난수

진정한 난수 생성

  • 수가 참으로 무작위
  • 무작위성은 기계의 고유 한계로 제약

의사난수 생성

  • 확률분포에 따라 수 생성
  • 표본 수가 늘수록 통계적 분포가 드러남

예: 수작업 조립 공정이 있는 공장

특정 수작업 조립의 반복 시간 산점도.

  • 다음 발생을 의사난수로 생성할 때 확률분포가 더 적합
Python으로 배우는 이산 사건 시뮬레이션

의사난수화를 위한 패키지

사용 가능한 통계 패키지:

  • NumPy
  • SciPy
  • statsmodels
  • pandas
  • Random
  • scikit-learn

Random 패키지

  • 난수와 의사난수 생성

본 강의 초점

  • 이산 사건 모델에서 자주 쓰는 메서드
Python으로 배우는 이산 사건 시뮬레이션

지정 범위의 난수

지정 범위의 정수 난수

메서드:

random.randint(start, end)

예: 3(포함)에서 9(미포함) 사이 정수

random.randint(3, 9)
5

지정 범위의 실수 난수

메서드:

random.uniform(start, end)

예: 3에서 9 사이 실수

random.uniform(3, 9)
6.4557754
Python으로 배우는 이산 사건 시뮬레이션

무작위 표본과 시퀀스

시퀀스에서 무작위 표본 추출

메서드:

random.sample(mylist, k=number_samples)

예: 리스트에서 무작위 2개 요소

mylist = ["apple", "banana", "cherry"]
random.sample(mylist, k=2)
['cherry', 'banana']

리스트 셔플(요소 재배열)

메서드:

random.shuffle(mylist)

예: 리스트 요소 무작위 재배열

mylist = ["book", "pencil", "eraser"]
random.shuffle(mylist)
['eraser', 'pencil', 'book']
Python으로 배우는 이산 사건 시뮬레이션

가우시안과 지수 분포

가우시안 분포

메서드:

random.gauss(average, standard_dev)

예: 평균 100, 표준편차 50의 의사난수 실수

random.gauss(100, 50)
123.59383

지수 분포

메서드:

random.expovariate(lambda)
  • lambda>0이면 결과는 [0, infinity]
  • lambda<0이면 결과는 [-infinity, 0]

예: 람다 1.5의 지수 분포 의사난수: random.expovariate(1.5)

0.2234355
Python으로 배우는 이산 사건 시뮬레이션

Ayo berlatih!

Python으로 배우는 이산 사건 시뮬레이션

Preparing Video For Download...