-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
74 lines (52 loc) · 1.89 KB
/
app.py
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 19 13:37:47 2022
@author: konrad
"""
import random
import streamlit as st
import pandas as pd
st.set_page_config(layout="wide")
# add a title to the page
st.title('Werf mal!')
# create a input field which stores the given number in a variable
wuerfe = st.number_input('Anzahl der Wuerfe, immer wenn du die Zahl änderst wird neu gewürfelt! (nicht mehr als 100000 sonst ist das zuviel)',value=500)
# limit the app to 100k runs. otherwise it will crash my laptop
if wuerfe > 100000:
wuerfe = 100000
# let the user select what to roll
seiten = st.selectbox(
'Wieviel Seiten hat dein "Würfel" 2 = Münze; 6= normaler Würfel; 20 = D20?',
(2, 6, 20),index=1)
# cach the following function to avoid recalculation everytime we query the resulting dataframe
@st.cache(show_spinner=False)
def muenze(wuerfe,seiten):
"""
"""
ergebnis= [0 for wurf in range(seiten)]
label = [wurf+1 for wurf in range(seiten)]
ergebnis_track =[]
df=pd.DataFrame(columns=['run','results'])
for i in range(wuerfe):
wurf = random.randint(1,seiten)
# print(wurf)
ergebnis[wurf-1]+=1
# wrong vektor in referencing the list??? i need to make a copy to fix it. apparently
# [:]
ergebnis_track.append(ergebnis[:])
return ergebnis,ergebnis_track,label
ergebnis,ergebnis_track,label = muenze(wuerfe,seiten)
singel_ergebnis=pd.DataFrame(ergebnis).T
singel_ergebnis.columns=label
# st.write(singel_ergebnis)
df =pd.DataFrame(ergebnis_track,columns=label)
#
slider = st.slider('Wieviele der '+str(wuerfe)+' möchtest du dir anschauen?',1,wuerfe,value=12)
df2 = df[:slider]
# st.line_chart(df2)
st.write('Verteilung der ersten '+str(slider)+' Wuerfe')
st.bar_chart(df2)
st.write('Verteilung aller '+str(wuerfe)+' Wuerfe')
st.bar_chart(singel_ergebnis.T)
st.line_chart(df)