dh-Materialien
JavaScript Programme
 

Lotto „6 aus 49“


z =
r =

A Genau r Richtige bei einem Lottofeld P(A) = 
B Mindestens r Richtige bei einem Lottofeld P(B) = 
C Mindestens einmal genau r Richtige bei z Lottofeldern P(C) = 
D Mindestens einmal mindestens r Richtige bei z Lottofeldern P(D) = 
E Höchstens r Richtige bei z Lottofeldern P(E) = 


// Lotto "6 aus 49" (c)2007 dh

function
CheckInput(inp) {
   var input = inp;
   var key;
   var value = "";
   for (j = 0; j < input.length; j++) {
      key = input.charCodeAt(j);
      if ((key < 48)||(key > 57)) {}
      else {value += String.fromCharCode(key)}
   }
   if (value == "") {value = "1"};
   return value;
}

function factorial(n) {
// n!
   var fac = 1;
   for (i = 1; i <= n; i++) fac = fac*i;
   return fac;
}

function binomial(n, k) {
// Binomialkoeffizient von n über k
   var bin = factorial(n)/(factorial(k)*factorial(n-k));
   return bin;
}

function pot(x, n) {
// x^n für natürliche n
   var y = 1;
   if (n == 0) {y = 1}
   else
for (i=1; i<=n; i++) y = x*y;
   return y;
}

var N = binomial (49, 6);

function Prob(r) {
// Wahrscheinlichkeit für genau r Richtige bei einem Lottofeld
   var y = binomial(6, r)*binomial(43, 6-r)/N;
   return y;
}

function Convert(input) {
// verhindert die Ausgabe kleiner Zahlen in wissenschaftlicher Notation.
// Wahrscheinlichkeitswerte, die nicht exakt gleich 1 sind,
// werden in der Form "0.9999999..." ausgegeben.
   var inp;
   var anz0;
   var st;
   if ((input > 0.9999999999)&& (input < 1)) input = 0.9999999999;
   inp = Math.round(10000000000*input) + "";
   anz0 = 10 - inp.length;
   st = "0.";
   for (i = 1; i <= anz0; i++) st = st + "0";
   var out = st + inp;
   out = out.slice(0, 11);

   if (input >= 1) {output = "1"}
   else {
      if (input <= 0) {output = "0"}
      else output = out
   }
   if (output == "0.9999999999") output ="0.9999999999...";
   return output;
}

function Lotto() {
// berechnet Wahrscheinlichkeitswerte für Ereignisse beim Spiel "6 aus 49"
   with (document.f_lottoEingabe) {
      e_r.value = CheckInput(e_r.value);
      e_z.value = CheckInput(e_z.value);
      if (e_r.value > 6) {
         document.f_lottoEingabe.e_r.value = 6
      }

      var r = Math.ceil(e_r.value);
      var z = Math.ceil(e_z.value);
   }

   with (document.f_lottoAusgabe) {
      e_A.value = Convert(Prob(r));

      var pB = 0;
      var i = r;
      while (i < 7) {pB = pB + Prob(i); i++}

      e_B.value = Convert(pB);

      var pC = 1 - pot((1 - Prob(r)), z);
      e_C.value = Convert(pC);

      var pD = 1 - pot((1 - pB), z);
      e_D.value = Convert(pD);

      pE = 0;
      i = r+1;
      while (i < 7) {pE = pE + Prob(i); i++}
      pE = pot((1 - pE), z);
      e_E.value = Convert(pE);
   }
}

Lotto „6 aus 49“