Vorgegebene Argumente (2/3)

Als etwas spezifischeres Beispiel soll nun eins aus der Statistik genommen werden. In der Statistik gibt es verschiedene Testverfahren, die Auskunft darüber geben, ob eine gewisse Datenmenge unter der Annahme einer bestimmten Verteilung der Daten ein Signifikanzniveau erreicht, d.h. mit einer vorgegebenen Wahrscheinlichkeit aussagekräftig ist. Dies mag jetzt für jemanden, der noch keine Erfahrung mit Statistik hat, schwer zu verstehen sein, aber was uns interessiert ist sowieso nur die Anzahl und Art der Parameter einer entsprechenden Funktion. Diese sind:

  1. Eine Datei mit den Daten - übergeben als Zeichenkette mit ihrem Namen und Pfad
  2. Das Signifikanzniveau - übergeben als float
  3. Eine Verteilung - übergeben als eine Aufzählung mit Namen distribution und Bezeichnungen für die einzelnen Verteilungen

In den meisten Fällen ist eine Datenmenge normalverteilt und bei dem Signifikanzniveau ist es üblich, 95% (0.95) anzunehmen. Daher könnte man eine solche Funktion folgendermaßen deklarieren:
  bool meinTest(string dateiname, float signifikanz=0.95, distribution vert=normal);

Damit kann bei der Übergabe auf die Angabe der Verteilungsform verzichtet werden oder gar nur die entsprechende Datei angegeben werden. Ein Verzicht auf die Angabe des Signifikanzniveaus ist aber erst bei gleichzeitigem Verzicht auf die Angabe der Verteilung möglich:

  meinTest("datei1.dat", 0.99, binomial); // Testet die Daten aus Datei1.dat unter Annahme einer
                                          // Binomialverteilung bei Signifikanzniveau von 99%
  meinTest("datei2.dat", 0,98);           // Testet bei Normalverteilung und 98% Signifikanz
  meinTest("datei3.dat");                 // Testet bei Normalverteilung und 95% Signifikanz