Tanelorn.net
Pen & Paper - Rollenspiel => Pen & Paper - Rollenspiel- & Weltenbau => Thema gestartet von: Timo am 23.01.2011 | 17:58
-
Ich grübel gerade an den passenden SChwierigkeitsgraden für mein System, scheitere aber gerade an "simpler" Mathematik.
Mein Problem, 1W6 hat jeweils 16,666...% Chance eine Nummer zu erhalten, also wenn die theoretischen Mindestwürfe 1-6 wären, hat man mit einem W6 Chancen von:
1=100%
2=83,34%
3=...
...
6=16,66%
Mein Problem nun, wie berechne ich die Wahrscheinlichkeiten für Mindestwürfe 1-24, bei:
2W6, 3W6, 4W6
-
Die Berechnung per Hand ist ab 3W6 recht aufwendig.
Aber die Tabelle mit den Ergebnissen findest du hier:
- 2W6 (http://www.wiki-aventurica.de/index.php/Summen_bei_Wurf_von_2W6) bzw. 2W6 (http://www.siegen-spielt.de/index.php?topic=30.0)
- 3W6 (http://www.wiki-aventurica.de/index.php/Summen_bei_Wurf_von_3W6)
Allgemein, wenn du es ohne Tabelle ausrechnen willst:
Zähle, wieviele Möglichkeiten es gibt, ein geeignetes Ergebnis zu erhalten. (Also eine Zahl größer oder gleich deinem Mindestwurf) und dividiere es durch die Gesamtzahl der Möglichkeiten.
Beispiel:
Wir wollen die Wahrscheinlichkeit für den Mindestwurf von 11 bei 2W6 berechnen.
Bei 2W6 gibt es insgesamt 6² = 36 Möglichkeiten.
Und es gibt 3 Möglichkeiten, 11 oder höher zu würfeln:
- 1. Wurf: 5 und 2. Wurf: 6
- 1. Wurf: 6 und 2. Wurf: 5
- 1. Wurf: 6 und 2. Wurf: 6
Das heißt, wir haben eine Wahrscheinlichkeit von 3/36 = 1/12 = 8,3%, 11 oder höher zu würfeln.
-
Mal ganz naiv (und daher mit minimalem Programmieraufwand) geschrieben:
#!/usr/bin/env python3
"""Wahrscheinlichkeiten für Mindestwürfe in einem Pool-System"""
augenzahlen = [1, 2, 3, 4, 5, 6]
ergebnis = {}
max_würfel = 5
max_mindestwurf = 24
for anzahl_würfel in range(max_würfel):
ergebnis[anzahl_würfel+1] = []
# erster würfel
ergebnis[anzahl_würfel+1].extend(augenzahlen)
for würfel in range(anzahl_würfel):
erg = []
for i in ergebnis[anzahl_würfel+1]:
for j in augenzahlen:
erg.append(i+j)
ergebnis[anzahl_würfel+1] = erg
erg = []
for mw in range(max_mindestwurf):
for würfel in ergebnis:
erg.append(((würfel, mw+1), len([i for i in ergebnis[würfel] if i >= mw+1]) / len(ergebnis[würfel])))
erg.sort()
for würfel_mw, Wahrscheinlichkeit in erg:
print (str(würfel_mw[0]) + "," + str(würfel_mw[1]) + ":", Wahrscheinlichkeit)
Ergebnis (bitte gegenprüfen! Ich habe das nur schnell runterprogrammiert und es könnten Fehler drin sein!):
(Anzahl Würfel, Mindestwurf: Wahrscheinlichkeit)
1,1: 1.0
1,2: 0.833333333333
1,3: 0.666666666667
1,4: 0.5
1,5: 0.333333333333
1,6: 0.166666666667
1,7: 0.0
1,8: 0.0
1,9: 0.0
1,10: 0.0
1,11: 0.0
1,12: 0.0
1,13: 0.0
1,14: 0.0
1,15: 0.0
1,16: 0.0
1,17: 0.0
1,18: 0.0
1,19: 0.0
1,20: 0.0
1,21: 0.0
1,22: 0.0
1,23: 0.0
1,24: 0.0
2,1: 1.0
2,2: 1.0
2,3: 0.972222222222
2,4: 0.916666666667
2,5: 0.833333333333
2,6: 0.722222222222
2,7: 0.583333333333
2,8: 0.416666666667
2,9: 0.277777777778
2,10: 0.166666666667
2,11: 0.0833333333333
2,12: 0.0277777777778
2,13: 0.0
2,14: 0.0
2,15: 0.0
2,16: 0.0
2,17: 0.0
2,18: 0.0
2,19: 0.0
2,20: 0.0
2,21: 0.0
2,22: 0.0
2,23: 0.0
2,24: 0.0
3,1: 1.0
3,2: 1.0
3,3: 1.0
3,4: 0.99537037037
3,5: 0.981481481481
3,6: 0.953703703704
3,7: 0.907407407407
3,8: 0.837962962963
3,9: 0.740740740741
3,10: 0.625
3,11: 0.5
3,12: 0.375
3,13: 0.259259259259
3,14: 0.162037037037
3,15: 0.0925925925926
3,16: 0.0462962962963
3,17: 0.0185185185185
3,18: 0.00462962962963
3,19: 0.0
3,20: 0.0
3,21: 0.0
3,22: 0.0
3,23: 0.0
3,24: 0.0
4,1: 1.0
4,2: 1.0
4,3: 1.0
4,4: 1.0
4,5: 0.999228395062
4,6: 0.996141975309
4,7: 0.988425925926
4,8: 0.97299382716
4,9: 0.945987654321
4,10: 0.902777777778
4,11: 0.841049382716
4,12: 0.760802469136
4,13: 0.664351851852
4,14: 0.556327160494
4,15: 0.443672839506
4,16: 0.335648148148
4,17: 0.239197530864
4,18: 0.158950617284
4,19: 0.0972222222222
4,20: 0.054012345679
4,21: 0.0270061728395
4,22: 0.0115740740741
4,23: 0.00385802469136
4,24: 0.000771604938272
5,1: 1.0
5,2: 1.0
5,3: 1.0
5,4: 1.0
5,5: 1.0
5,6: 0.999871399177
5,7: 0.999228395062
5,8: 0.997299382716
5,9: 0.992798353909
5,10: 0.983796296296
5,11: 0.967592592593
5,12: 0.941229423868
5,13: 0.90200617284
5,14: 0.84799382716
5,15: 0.778549382716
5,16: 0.694830246914
5,17: 0.600308641975
5,18: 0.5
5,19: 0.399691358025
5,20: 0.305169753086
5,21: 0.221450617284
5,22: 0.15200617284
5,23: 0.0979938271605
5,24: 0.0587705761317
Das Skript ist im Repo des 1w6-Systems verfügbar: https://bitbucket.org/ArneBab/1w6/src/tip/sonstiges/Skripte/pool_mindestwuerfe.py
PS: Ja, das wäre mit einer Binomialverteilung viel schneller. Wollte ich aber grade nicht machen; hatte ich schon im Spielfähig-Skript :) → https://bitbucket.org/ArneBab/1w6/src/tip/sonstiges/Skripte/spielfaehig.py
-
Da ich die Daten gerade schon da hatte und schon länger ausprobieren kann, wie ich nur ausgewählte Teile von Dateien plotten kann:
[gelöscht durch Administrator]
-
Nehmt einfach Anydice
http://anydice.com/program/4f2 (http://anydice.com/program/4f2)
Man muss sich ein wenig einarbeiten, aber dann gehen auch explodierende Würfel etc. Einfach auf "at least" klicken und die Chancen für mindestwürfe sind zu sehen. Lässt sich auch graphisch darstellen.
-
anydice sieht cool aus! Danke für den Link!
-
@killedcat
danke, das hilft sehr