#!/usr/bin/env python
# coding: utf-8
# In[1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
get_ipython().run_line_magic('matplotlib', 'inline')
#
Kolikon heittoa
#
# Simuloin kolikon heittoa miljoona kertaa tuottamalla sattumanvaraisesti nollia ja ykkösiä. Tulokset tallennan heitot-nimiseen muuttujaan.
# In[2]:
heitot = np.random.randint(2, size = 1000000)
print('Kruunuja:', str(np.sum(heitot)), 'Klaavoja:', str(np.sum(1 - heitot)))
# Muodostan listan, joka kertoo kuinka monta kertaa sama tulos tulee peräkkäin. Jos esimerkiksi tulee kolme klaavaa, sitten yksi kruunu ja sen jälkeen neljä klaavaa, niin listaan tulee 3, 1, 4. Listan nimeksi annan sarjat.
# In[3]:
sarjat = []
sarja = 1
for i in range(len(heitot) - 1):
if heitot[i] == heitot[i + 1]:
sarja += 1
else:
sarjat.append(sarja)
sarja = 1
sarjat.append(sarja)
# Lasken sarjat-listassa esiintyvien lukujen lukumäärät. Kuten huomaat, niin jopa yli kymmenen peräkkäisen kruunun tai klaavan sarjoja on melko paljon.
# In[4]:
from collections import Counter
laskuri = Counter(sarjat)
pd.DataFrame(data = Counter(laskuri).values(), index = Counter(laskuri).keys(), columns = ['lkm']).sort_index()
# Kahden nopan heittoa
#
# Seuraavassa heitän kahta noppaa tuhat kertaa ja tallennan tulokset heitot-nimiseen muuttujaan.
#
# Lasken eri silmälukujen määrät kummallekin nopalle ja parien määrät.
# In[5]:
# random.randint(6) tuottaa lukuja 0 - 5; lisätään 1, jotta saadaan nopan silmälukuja 1 - 6
heitot = np.random.randint(6, size = (1000, 2)) + 1
# dataframe tulosten esittämistä varten
tulokset = pd.DataFrame(columns = ['Tulos', 'Eka', 'Toka', 'Pareja'])
# for silmukka käy läpi i:n arvot 1 - 6
for i in range(1, 7):
eka = heitot[:,0] == i # ensimmäinen noppa
toka = heitot[:,1] == i # toinen noppa
parit = eka & toka # pari (molemmilla sama tulos)
# Lisätään silmälukuun liittyvät lukumäärät dataframeen
tulokset = tulokset.append({'Tulos' : i, 'Eka' : eka.sum(), 'Toka' : toka.sum(),
'Pareja' : parit.sum()}, ignore_index = True)
tulokset
# Esitän lopuksi kahden nopan silmälukujen summan jakauman
# In[6]:
df = pd.DataFrame(heitot)
df['sum'] = df.sum(axis=1)
ax = df['sum'].value_counts(sort = False).plot.bar()
#Pientä tuunausta
ax.set_xlabel('Silmälukujen summa')
ax.set_ylabel('Esiintymiskertojen lukumäärä')
ax.grid(axis = 'y')
ax.set_axisbelow(True)