Created
April 19, 2018 14:07
-
-
Save marcorei/8951600900f0a8151672f96921232f1a to your computer and use it in GitHub Desktop.
Probability calculation helper for Google Spreadsheets
This file contains hidden or 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
function _FACT(num) { | |
var rval = 1; | |
for (var i = 2; i <= num; i++) { | |
rval = rval * i; | |
} | |
return rval; | |
}; | |
function _COMBIN(x, y) { | |
if (x < y) return 0; | |
return _FACT(x) / ( _FACT(y) * _FACT(x - y) ); | |
}; | |
// Standard Lotto Berechnung. | |
function LOTTO(topf, gezogen, richtige) { | |
var correctPos = _COMBIN(gezogen, richtige); | |
var wrongPos = _COMBIN(topf - gezogen, gezogen - richtige); | |
var pos = correctPos * wrongPos; | |
var allPos = _COMBIN(topf, gezogen); | |
return pos / allPos; | |
} | |
// Berechnet die Wahrscheinlichkeit bei einer Ziehung mindestens x richtige zu haben. | |
function LOTTO_KUMUL(topf, gezogen, richtige) { | |
var kumul = 0; | |
for(var i = richtige; i <= gezogen; i++) { | |
kumul += LOTTO(topf, gezogen, i); | |
} | |
return kumul; | |
} | |
// Berechnet die Wahrscheinlichkeit bei der letzten Ziehung einen neuen Gewinner zu finden, wenn in jeder vorangehenden Ziehung keine gefunden wurde. | |
function LOTTO_STEP_DEPEND(topf, gezogen, richtige) { | |
if (gezogen == richtige) { | |
return LOTTO(topf, gezogen, richtige); | |
} | |
// Nur die mit richtige-1 im letzten Schritt können hier gewinnen. | |
var lastDrawNum = gezogen - 1 | |
var chanceToBeOneOf = LOTTO(topf, lastDrawNum, richtige - 1); | |
// Die neue Ziehung ist aus dem Topf verbleibender Gegestände | |
var potPre = topf - lastDrawNum; | |
var chanceToGetTheOne = LOTTO(potPre, 1, 1); | |
// Combine chances | |
return chanceToBeOneOf * chanceToGetTheOne; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment