Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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;
- }
Add Comment
Please, Sign In to add comment