Python - 표준 모듈(random)을 이용하여 라이브러리(library) 활용하기 - 1

반응형

 

# 라이브러리란?

  • 특정 기능을 수행하기 위해 여러 데이터(함수, 클래스, 모듈 등)들을 모아놓은 집합
  • 프로그래밍에서는 주로 소스코드의 집합으로 이해하면 쉬움

 

# 라이브러리의 장점

  • 누구나 쉽게 사용 가능
  • 직접 코딩해야 하는 불편함 감소, 코딩의 편의성 상승
  • 코드의 간결화
  • 코딩시 소비되는 시간 단축

 

# 라이브러리 사용 방법

  • import 라이브러리명 (+as 단축어)
  • = from 라이브러리명 import 함수명

 

#라이브러리의 사용 예시로 표준 모듈의 random과 date/time을 이용해보자.

 

# 표준 모듈 random을 이용한 난수 생성하기

  • random 모듈 호출하기
    • random 함수 이용시 반드시 random 모듈이 호출 된 상태여야 함
import random
# 표준모듈 random 호출

 

  • random() : 0.0 ~ 1.0 사이의 난수 구하기
random.random()
>>> 0.629457285670085
# 0.0 ~ 1.0 사이의 난수 생성

 

  • randint(a, b) : a부터 b까지의 정수의 난수 구하기
# 정수형 난수 얻기 int
random.randint(1,10)
>>> 8
# 매개변수 두 개 필요, 없으면 에러
# 정수 1 ~ 10 사이의 난수 생성

 

  • uniform(a, b) : a부터 b까지의 실수의 난수 구하기
# 실수형 난수 얻기 float
random.uniform(1, 5)
>>> 4.779869962606982
# 매개변수 두개 필요, 없으면 에러, 실수형 출력
# 1 ~ 5 사이의 난수 생성

 

  • seed(n) : 난수 값과 순서의 패턴을 똑같이 하고 싶을때 사용, n은 패턴의 번호로 이해하면 쉬움
    • seed의 번호가 같으면 여러 번 난수를 생성하여도 출력되는 난수의 값과 순서가 같음
# seed 활용하여 난수의 결과값을 동일하게 출력해보기
random.seed(5) # 시드를 5로 설정
rand = []
for x in range(3):
    rand.append(random.randint(1,6))
print(rand)
# 1 ~ 5 사이의 난수 3개 생성
>>> [5, 3, 6]


# 난수 재생성
random.seed(5) # 시드를 5로 설정
rand = []
for x in range(3):
    rand.append(random.randint(1,6))
print(rand)
# 1 ~ 5 사이의 난수 3개 재생성
>>> [5, 3, 6]
# 시드가 같기때문에 난수를 재생성하여도 값과 순서가 같음을 확인


# 난수 다시 재생성
random.seed(10) # 시드를 10로 설정
rand = []
for x in range(3):
    rand.append(random.randint(1,6))
print(rand)
>>> [5, 1, 4]
# 시드가 달라지면 결과 값이 다름

 

  • normalvariate(평균, 편차) : 정규분포에 해당하는 난수를 생성
normal_variate = [] # 정규분포를 저장할 리스트 생성

for i in range(5):
    value = random.normalvariate(170, 10)
    normal_variate.append(value)
# 10개의 난수를 생성하고 저장
# 평균은 170, 편차는 10
>>>
[170.2125529540451,
 170.98236854104923,
 162.66128677108964,
 173.18035910257234,
 169.91882297374545]

 

  • choice(a) : a(리스트나 집합 등)의 저장된 값 임의 선택
noodle_list = ["신라면", "너구리", "왕뚜껑"]
random.choice(noodle_list)
# 리스트에 저장된 값들의 임의선택
>>> '왕뚜껑'

 

  • sample(a, n) : a의 저장된 값 n개 임의 선택
noodle_list = ["신라면", "너구리", "왕뚜껑"]
random.sample(noodle_list,2)
# 리스트에 저장된 값들의 n개 값 임의선택
>>> ['왕뚜껑', '너구리']

 

  • shuffle(a) : a의 저장된 값을 임의로 순서를 변경 (원본 값 순서가 변함)
noodle_list = ["신라면", "너구리", "왕뚜껑"]
random.shuffle(noodle_list)
noddle_list
# 데이터들의 순서를 랜덤으로 섞어서 출력
>>> ['너구리', '신라면', '왕뚜껑']

 

  • 원본 값 변경 없이 셔플 된 리스트를 얻어오려면? (no shuffle)
noodle_list = ["신라면", "너구리", "왕뚜껑"]
random.sample(noodle_list,len(noodle_list))
# 임의선택을 전체로 적용
>>> ['신라면', '왕뚜껑', '너구리']
반응형