Sonntags-Tochter: Quellcode
<HTML>
<HEAD>
<TITLE>Geschwister-Problem</TITLE>
</HEAD>
<BODY TEXT=\"#000000\">
<?php
echo "Sonntags-Tochter:\n";
$n = 10000;
// Query-String lesen, falls nach "?" Anzahl angegeben wurde
$query = $_SERVER['QUERY_STRING'];
if (is_numeric($query)) {
$n = $query;
echo "<BR>Anzahl N = $n (Query)<BR>\n";
}
else {
echo "<BR>Anzahl N = $n (Default)<BR>\n";
}
// T=Tochter, S=Sohn
$geschlecht = array("T", "S");
// Wochentage Montag bis Sonntag
$tag = array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
$sonntags_tochter = 0;
$zwei_toechter = 0;
for ($k = 0; $k < $n; $k++) {
// Ganzzahlige Zufallsszahl mit mt_rand(a,b) aus dem Bereich a bis b
$random_geschlecht = $geschlecht[mt_rand(0, 1)];
$random_tag = $tag[mt_rand(0, 6)];
// Text fuer 1. Kind, z.B. T-Mo
$kind_1 = "${random_geschlecht}-${random_tag}";
$random_geschlecht = $geschlecht[mt_rand(0, 1)];
$random_tag = $tag[mt_rand(0, 6)];
// Text fuer 2. Kind
$kind_2 = "${random_geschlecht}-${random_tag}";
// Text fuer familie, z.B. 1:T-Mo-2:T-Di
$kinder = "1:${kind_1} + 2:${kind_2}";
if ($k <= 25) echo "<BR>$kinder\n";
if ($k == $n-1) echo "<BR>...\n";
// Falls ein Kind Sonntags-Tochter ist
if (strpos($kinder, "T-So") !== false) {
// Mitzaehlen dieser Faelle: Familie hat Sontagstochter
$sonntags_tochter = $sonntags_tochter + 1;
// Falls sowohl das 1. Kind als auch das 2. Kind Tochter ist
if (strpos($kinder, "1:T") !== false && strpos($kinder, "2:T") !== false) {
// Mitzaehlen dieser Faelle: Zwei Toechter
$zwei_toechter = $zwei_toechter + 1;
}
}
}
$prozent = round($zwei_toechter/$sonntags_tochter * 100, 4);
echo "<BR>Anzahl der Familien mit 2 Töchtern: $zwei_toechter von $sonntags_tochter Familien mit Sonntags-Tochter = $prozent %\n";
$test = round(13/27*100, 4);
echo "<BR>Erwarteter exakter Wert: 13/27 = $test %\n";
?>
</BODY>
</HTML>