반응형
안녕하세요.
이승혁 입니다.
지난 포스팅에서 동전의 앞면, 뒷면에 대한 확률을 확인해 봤습니다.
이전 게시글을 읽고 오시면 생략한 부분들에 대한 설명이 나와있습니다.
2021/01/04 - [알고리즘] - [Python&SQL] 동전의 앞면이 나올 확률은 ? Random
오늘은 주사위를 사용해 확률을 확인해 보도록 하겠습니다!
# 주사위 1회 던지기
import random
print('주사위를 던집니다.')
print('결과 : ',random.randint(1,6))
동전과 마찬가지로 random 모듈을 사용합니다.
randint 함수를 사용해 1 ~ 6 사이의 수를 랜덤으로 선택합니다.
# 주사위 100회 던지기
import random
print('주사위를 100회 던집니다.')
result=[0]*6
for i in range(100):
dice=random.randint(1,6)
result[dice-1] += 1
print('결과 : ',end='')
for idx,i in enumerate(result):
print(idx,'-',i,'번,',end=' ')
## 주사위 눈 확률 시각화
import random
import matplotlib.pyplot as plt
print('주사위를 100000회 던집니다.')
result=[0]*6
for i in range(100000):
dice=random.randint(1,6)
result[dice-1] += 1
for i in range(6):
result[i]/=100000
plt.bar(range(1,7),result)
plt.ylim(0,0.3)
plt.ylabel('prob')
plt.xlabel('dice number')
plt.show()
plt.pie(result,autopct='%2.2f%%',labels=range(1,7))
plt.show()
모든 확률이 비슷하게 나타납니다.
# 주사위 두 개 던져 합 확률 구하기
import random
import matplotlib.pyplot as plt
print('주사위 2개를 100000회 던집니다.')
result=[0]*13 ## 0 1 2 3 4 5 6 7 8 9 10 11 12
for i in range(100000):
dice1=random.randint(1,6)
dice2=random.randint(1,6)
result[dice1+dice2] += 1
for i in range(13):
result[i]/=100000
plt.bar(range(2,13),result[2:],tick_label=range(2,13)) # 2 ~ 12
plt.ylim(0,0.3)
plt.ylabel('prob')
plt.xlabel('2 dice sum')
plt.show()
주사위 2개를 10만 번 던져 합을 저장합니다.
시각화를 통해 결과를 확인해 보았습니다.
쉽고 재미있게 데이터를 생성하고, 시각화 하는 연습을 진행해 봤습니다.
읽어주셔서 감사합니다.
반응형
'알고리즘' 카테고리의 다른 글
[Python&SQL] 각 자리수 합 더하기 (2) | 2021.01.15 |
---|---|
[Python&SQL] 적어도 불량품 1개일 확률 ? (7) | 2021.01.14 |
[Python & SQL] 몬테 카를로 | 원주율 구하기 (1) | 2021.01.09 |
[Python] 없는 수가 뭘까 ? 빠진수 찾기 (6) | 2021.01.07 |
[Python&SQL] 동전의 앞면이 나올 확률은 ? Random (0) | 2021.01.04 |
[Python&SQL] 재귀 함수 팩토리얼 구구단 (0) | 2021.01.03 |
[Python] 소인수 분해하기 (2) | 2021.01.02 |
[Python] 최소공배수(LCM) 구하기 (0) | 2021.01.02 |