#!/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)