Created
September 12, 2020 22:28
-
-
Save AdriDevelopsThings/70629946620d9165a8324e63983b3ea6 to your computer and use it in GitHub Desktop.
Diese Simulation soll zeigen, dass es Magie gibt. Okay, sie soll eigentlich nur darstellen weshalb bestimmte Studien und Statistiken auf Grund der "Regression zur Mitte" quatsch sind. Viel Spaß beim ausprobieren!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import matplotlib.pyplot as plt | |
import random | |
class Wuerfel: | |
def __init__(self, seiten): | |
self.seiten = seiten | |
def wuerfeln(self): | |
return random.choice(list(range(1, self.seiten + 1))) | |
class TestCase: | |
def __init__(self, wuerfel: Wuerfel): | |
self.wuerfel = wuerfel | |
self.mit_magie = [] | |
self.ohne_magie = [] | |
self.letztes_mit_magie = False | |
self.letztes = 3 | |
def nimm_den_zauberstab_in_die_hand(self): | |
self.letztes_mit_magie = True | |
def add_case(self): | |
augenzahl = self.wuerfel.wuerfeln() | |
if self.letztes_mit_magie: | |
self.mit_magie.append(augenzahl - self.letztes) | |
else: | |
self.ohne_magie.append(augenzahl - self.letztes) | |
self.letztes_mit_magie = False | |
if augenzahl < 3: | |
self.nimm_den_zauberstab_in_die_hand() | |
self.letztes = augenzahl | |
def make_cases(self, count): | |
for i in range(count): | |
self.add_case() | |
def get_yerr(l, avg): | |
o = 0 | |
if max(l) - avg > o: | |
o = max(l) - avg | |
if avg - min(l) > o: | |
o = avg - min(l) | |
return o | |
test_case = TestCase(Wuerfel(6)) | |
if __name__ == "__main__": | |
test_case.make_cases(1000000) | |
xAxis = ["Ohne Magie", "Mit Magie"] | |
ohne_magie = sum(test_case.ohne_magie) / len(test_case.ohne_magie) | |
plt.bar( | |
"Ohne Magie", | |
sum(test_case.ohne_magie) / len(test_case.ohne_magie), | |
color="grey", | |
yerr=get_yerr(test_case.ohne_magie, ohne_magie), | |
) | |
mit_magie = sum(test_case.mit_magie) / len(test_case.mit_magie) | |
plt.bar( | |
"Mit Magie", | |
sum(test_case.mit_magie) / len(test_case.mit_magie), | |
color="red", | |
yerr=get_yerr(test_case.mit_magie, mit_magie), | |
) | |
plt.xlabel("Magie") | |
plt.ylabel("Differenz zwischen Würfen") | |
plt.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hier kann man auch noch mal schön sehen, wie der Durchschnitt für die Differenz der letzten und der nächsten Augenzahl beim Nutzen eines Zauberstabes größer ist, als die normale.