Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 딥러닝
- Visualization
- python visualization
- MySQL
- Tistory
- 통계학
- MATLAB
- 파이썬 시각화
- SQL
- Ga
- Blog
- 서평
- Google Analytics
- 한빛미디어
- 매틀랩
- 한빛미디어서평단
- Python
- 티스토리
- 독후감
- Pandas
- Linux
- tensorflow
- 시각화
- 리눅스
- 파이썬
- matplotlib
- 서평단
- 텐서플로
- 블로그
- 월간결산
Archives
- Today
- Total
pbj0812의 코딩 일기
[통계학] 동전 던지기 게임을 통한 정규분포 그래프 만들기 본문
0. 목표
- 동전 던지기 게임을 통한 정규분포 그래프 생성(python)
- 규칙 : 게임 1회 당 동전을 10번 던져 각 0, 1점을 부여 및 합산(총 0 ~ 10점)
1. 실습
1) library 호출
import random
import matplotlib.pyplot as plt
import pandas as pd
2) 시도(동전을 던지는) 횟수에 따른 점수 합산 함수
- randint를 사용하여 0 아니면 1이 랜덤으로 나오게 지정
- sum을 이용하여 모든 시도의 점수를 합산
- 결과 : 3
def game(inp):
try_result = []
for i in range(inp):
try_result.append(random.randint(0, 1))
result = sum(try_result)
return result
print(game(10))
3) 게임 횟수(한 게임에 10회 던지기)에 따른 결과 저장하는 함수
- 결과 : [5, 5, 6, 3, 6, 3, 5, 6, 5, 5]
def game_result(inp):
result = []
for i in range(inp):
result.append(game(10))
return result
game_result(10)
4) 3)의 결과를 합산 점수별 그룹화 하는 함수
- 후의 차트를 위해 0 ~ 10점에 해당하는 라벨링 변수를 따로 만들고 for를 통해 해당 변수에 속하면 +1씩 증가
def make_group(inp):
num_0 = 0
num_1 = 0
num_2 = 0
num_3 = 0
num_4 = 0
num_5 = 0
num_6 = 0
num_7 = 0
num_8 = 0
num_9 = 0
num_10 = 0
for i in inp:
if i == 0:
num_0 +=1
elif i == 1:
num_1 +=1
elif i == 2:
num_2 +=1
elif i == 3:
num_3 +=1
elif i == 4:
num_4 +=1
elif i == 5:
num_5 +=1
elif i == 6:
num_6 +=1
elif i == 7:
num_7 +=1
elif i == 8:
num_8 +=1
elif i == 9:
num_9 +=1
elif i == 10:
num_10 +=1
result = pd.DataFrame({
'standard' : ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
'result' : [num_0, num_1, num_2, num_3, num_4, num_5, num_6, num_7, num_8, num_9, num_10]
})
return result
5) 테스트
make_group(game_result(10))
- 결과
6) 차트 확인
result = make_group(game_result(10))
plt.bar(result['standard'], result['result'])
- 결과
7) 여러 경우의 수(리스트) 입력시 자동으로 그려주는 함수
- 정수로 이루어진 list를 받아 자동으로 그림을 생성
- list의 길이에 따라 그림의 크기를 자동 조정하게 제작
def make_graph(inp):
# y pixel size
len_inp = len(inp)
size_y = 5 * len_inp
fig = plt.figure()
fig.set_size_inches(15, size_y)
for i in range(len_inp):
# subplot 추가
fig.add_subplot(len_inp, 1, i+1)
title = str(inp[i]) + ' cycle'
plt.title(title)
# 연산
result = make_group(game_result(inp[i]))
plt.bar(result['standard'], result['result'])
plt.show()
2. 확인
1) 실험 리스트 작성
cycle = [10, 50, 100, 500, 1000, 2000, 10000]
2) 실행
make_graph(cycle)
3) 결과
- 횟수가 증가할수록 정규분포의 형태를 이루고 있음(대략 1,000번 이상)
3. 참고
'Science > 통계학' 카테고리의 다른 글
[통계학] python으로 포아송 분포 함수 구현하기 (0) | 2020.08.18 |
---|---|
[통계학] python을 통한 왜도 / 첨도 구현 (0) | 2020.08.16 |
[통계학] Python으로 피어슨의 상관계수 구현하기 (0) | 2020.08.14 |
[통계학] 변동계수(CV) 구현하기 (0) | 2020.08.13 |
[통계학] CART 구현을 통한 TITANIC 변수 선택 (0) | 2020.03.10 |
Comments