본문 바로가기
Python

[파이썬] 라이브러리: random, randint, uniform, normalvariate, as, choice, sample, shuffle, statistics, mean, median

by eyoo 2022. 4. 27.

random 라이브러리를 활용해 난수 (무작위 수)를 만들수있다.

 

random 라이브러리를 활용하기 위해 import해보자

 

import random

 

 

random 함수를 통해 0.0 ~ 1.0 사이 난수를 생성할수 있다.

 

in:

random.random()

out:

0.031145235632028312

# 실핼할때 마다 무작위 수가 나온다.

 

 

randint 함수를 사용해 int 형의 난수를 얻어보자

 

in:

random.randint(100,500)

out:

324

# 100에서 500까지의 정수 형태의 난수가 얻어졌다.

 

 

uniform함수를 사용해 float 형의 난수를 얻을수 있다.

 

in:

random.uniform(1,5)

out:

1.39769944990312

 

 

seed를 설정해 똑같은 난수의 패턴이 나오도록 할수있다.

 

in:

a = []
random.seed(5)
for i in range(4):
    a.append(random.randint(1,6))
print(a)

out:

[5, 3, 6, 3]

# seed값을 5로 설정하면 5, 3, 6, 3...이 나온다.

# randint함수를 실행할때마다 똑같은 패턴으로 나온다.

# 때문에 시드값은 절대 외부에 알려지면 안된다.

 

 

random 라이브러리의 normalvariate함수를 활용해 정규분포에 해당하는 난수를 생성할수있다.

 

평균 170, 표준편차 10에 해당하는 정규분포 코드를 짜보자

 

in:

normal_variate = []
for i in range(1000):
    value = random.normalvariate(170,10)
    normal_variate.append(value)
normal_variate

out:

[161.20402915213026,
 183.56553044463578,
 158.77871704842505,
 167.56909413586396,
 161.81354365999096,
 164.0577556822155,
 155.05224184100402,
 ...

 

 

as 로 라이브러리 이름을 줄이도록 지정해서 쓸수있다.

 

import matplotlib.pyplot as plt

 

 

matplotlib.pyplot라이브러리의 hist함수를 사용하여 정규분포 차트를 나타낼수 있다.

 

in:

plt.hist(normal_variate)

out:

(array([  5.,  20.,  90., 201., 252., 207., 141.,  64.,  15.,   5.]),
 array([140.48195841, 146.76185416, 153.04174992, 159.32164567,
        165.60154143, 171.88143718, 178.16133294, 184.44122869,
        190.72112445, 197.0010202 , 203.28091596]),
 <BarContainer object of 10 artists>)

 

 

random 라이브러리의 choice함수를 사용해 리스트나 집합에 저장된 값을 무작위로 뽑을수 있다.

 

in:

noodle_list = ['너구리','신라면','진라면','왕뚜껑','오징어짬뽕']
random.choice(noodle_list)

out:

'오징어짬뽕'

 

 

smaple함수를 사용해서 여러개의 데이터들을 무작위로 뽑을수 있다

 

in:

random.sample(noodle_list, 3)

out:

['왕뚜껑', '신라면', '너구리']

 

 

shuffle함수를 사용하여 리스트 속 데이터들의 순서를 섞어서 저장할수 있다.

 

in:

random.shuffle(noodle_list)
noodle_list

out:

['진라면', '신라면', '왕뚜껑', '오징어짬뽕', '너구리']

 

 

만약 원본 리스트는 변형없이 그대로 두고, 순서가 섞인 리스트를 얻어오고자 한다면

 

in:

random.sample(noodle_list,len(noodle_list))

out:

['너구리', '신라면', '오징어짬뽕', '진라면', '왕뚜껑']

 

+

 

평균값과 중앙값을 알아보자

 

평균을 구한다고 한다면

 

in:

data = [6,4,5,2,2,1,6,6,3]
sum(data)/len(data)

out:

3.888888888888889

# 각 값들의 합에서 개수를 나누어 준다.

 

 

statistics라이브러리를 임포트해서 mean함수를 이용해 평균을 구할수 있다.

 

in:

data = [6,4,5,2,2,1,6,6,3]
import statistics
statistics.mean(data)

out:

3.888888888888889

 

 

중앙값을 구한다고 한다면

 

median 함수를 이용하여 중앙값을 구해보자

 

in:

data = [6,4,5,2,2,1,6,6,3]
statistics.median(data)

out:

4

# 중앙값은 정렬된 리스트의 가운데 있는 값이다.

 

 

 

 

 

댓글