<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Das Geburtstagsparadoxon]]></title><description><![CDATA[<p>guude,</p>
<p>ich gehe zur zeit probeklausuren durch, und soll nun eine simulation des geburtstagsparadoxon[1] schreiben. ich dachte ich &quot;dokumentere&quot; das ganze hier ein wenig, und ihr koennt euren senf dazu geben und mir etwas hilfestellung geben. ich hab noch ein paar verstaendnisschwierigkeiten. ja, nicht ganz uneigennuetzig das ganze, ich gebs ja zu. aber es kommt ja immer auf das &quot;wie&quot; an ...</p>
<p>zu allererst die aufgabenstellung:</p>
<blockquote>
<p>Sie sollen das &quot;Geburtstagsparadoxon&quot; aus der Wahrscheinlichkeitsrechnung durch eine Simulation überprüfen. Hierbei wird untersucht, wieviele Personen in einer Gruppe sein müssen, damit die Wahrscheinlichkeit dafür, dass es zwei Personen in dieser Gruppe gibt, die am selben Tag Geburtstag haben, größer als 50% ist. Erstaunlicherweise ist dies schon für relativ kleine Gruppen der Fall (daher die Bezeichnung &quot;Geburtstagsparadoxon&quot;).</p>
</blockquote>
<p>das gegebene klassendiagramm:<br />
<a href="http://img204.imageshack.us/my.php?image=klassendiagrammrm8.png" rel="nofollow">http://img204.imageshack.us/my.php?image=klassendiagrammrm8.png</a><br />
und hier meine klassenimplementationen:</p>
<pre><code>/*
 *  Group.h
 *  Geburtstagsparadoxon 
 *
 */
#ifndef GROUP_H
#define GROUP_H
#include &quot;Date.h&quot;

class Group {

private:
	Date birthdays[200];
	int size;

public:
	Group();

	bool birthdayOnTheSameDay();
	void sort();
	void print();
	bool isFull();

};
#endif
</code></pre>
<pre><code>/*
 *  Date.h
 *  Geburtstagsparadoxon
 *
 */
#ifndef DATE_H
#define DATE_H

class Date {

private:
	int dayInYear;
	int year;

public:
	Date();

	void setRandomDate();

	int getDayInYear();
	int getDayInMonth();

	int getMonth();
	int getYear();

	void print();

};
#endif
</code></pre>
<p>hier sind erlaeuterungen zu den ersten 2 methoden der klasse Date.h</p>
<blockquote>
<p>Der Standardkonstruktor von <strong>Date</strong> soll das erzeugte Objekt auf ein zufälliges Datum setzen, wie unter <strong>setRandomDate</strong> beschrieben.</p>
<p><strong>setRandomDate</strong> soll die Datenelemente <strong>dayInYear</strong> und <strong>year</strong> unter den folgenden Randbedingungen setzen: <strong>dayInYear</strong> soll auf zufällige Weise so gesetzt werden, dass jeder der 365 Tage eines Jahres (Schaltjahre werden nicht berücksichtigt) mit der gleichen Wahrscheinlichkeit auftritt. Der Wert für <strong>year</strong> soll zufällig und gleichverteilt aus dem Bereich 1950 bis 2007 (jeweils einschließlich) genommen werden.</p>
</blockquote>
<p>hier meine erste implementation des standardkonstruktors und der setRandomDate funktion:</p>
<pre><code class="language-cpp">// standardkonstruktor
Date::Date()
{
	dayInYear = 0;
	year = 0;

	int dateZufallsDatum = 0;
	dateZufallsDatum = 1 + rand() % 365;

	cout &lt;&lt; &quot;Vom Standardkonstruktor gesetztes Zufallsdatum: &quot; &lt;&lt; dateZufallsDatum &lt;&lt; endl;
}
</code></pre>
<pre><code class="language-cpp">// setRandomDate
void Date::setRandomDate()
{
	dayInYear = 0;
	year = 0;

	const int ANFANGSJAHR = 1950;
	const int ENDJAHR = 2007;
	const int DIFFERENZ = ANFANGSJAHR - ENDJAHR;

	cout &lt;&lt; &quot;Funktion setRandomDate: &quot;;

	int zufallsDatum = 0;
	zufallsDatum = 1 + rand() % 365;
	dayInYear = zufallsDatum;

	cout &lt;&lt; &quot;setRandomDate Zufallsdatum &quot;;
	cout &lt;&lt; zufallsDatum &lt;&lt; endl;

	for(int i = ANFANGSJAHR; i &lt;= ENDJAHR; i++) {
		int welchesJahrWirdAusgegeben = 0;
		welchesJahrWirdAusgegeben = 1 + rand() % DIFFERENZ;
		year = welchesJahrWirdAusgegeben;
	}
	cout &lt;&lt; &quot;Zufallsjahr zwichen 1957 und 2007: &quot;;
	cout &lt;&lt; year &lt;&lt; &quot; &quot; &lt;&lt; endl;
}
</code></pre>
<p>und die main.cpp</p>
<pre><code class="language-cpp">// main.cpp
//

#include &quot;Group.h&quot;
#include &quot;Date.h&quot;

#include &lt;iostream&gt;
using namespace std;

#include &lt;cstdlib&gt;
using std::rand;
using std::srand;

#include &lt;ctime&gt;
using std::time;

int main (int argc, char * const argv[]) {
    // insert code here...

	srand(time(0));

	Date neuesDatum;

	neuesDatum.setRandomDate();	

	return 0;
}
</code></pre>
<p>waere super wenn jmd mein bisheriges &quot;werk&quot; absegnen koennte. bzw mir sagt was ich besser machen kann oder schon richtig gemacht habe.</p>
<p>danke und gruss,<br />
buk</p>
<p>--- links ---<br />
[1] <a href="http://de.wikipedia.org/wiki/Geburtstagsparadoxon" rel="nofollow">http://de.wikipedia.org/wiki/Geburtstagsparadoxon</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233119/das-geburtstagsparadoxon</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 02:44:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233119.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Jan 2009 22:42:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Das Geburtstagsparadoxon on Sat, 31 Jan 2009 22:42:38 GMT]]></title><description><![CDATA[<p>guude,</p>
<p>ich gehe zur zeit probeklausuren durch, und soll nun eine simulation des geburtstagsparadoxon[1] schreiben. ich dachte ich &quot;dokumentere&quot; das ganze hier ein wenig, und ihr koennt euren senf dazu geben und mir etwas hilfestellung geben. ich hab noch ein paar verstaendnisschwierigkeiten. ja, nicht ganz uneigennuetzig das ganze, ich gebs ja zu. aber es kommt ja immer auf das &quot;wie&quot; an ...</p>
<p>zu allererst die aufgabenstellung:</p>
<blockquote>
<p>Sie sollen das &quot;Geburtstagsparadoxon&quot; aus der Wahrscheinlichkeitsrechnung durch eine Simulation überprüfen. Hierbei wird untersucht, wieviele Personen in einer Gruppe sein müssen, damit die Wahrscheinlichkeit dafür, dass es zwei Personen in dieser Gruppe gibt, die am selben Tag Geburtstag haben, größer als 50% ist. Erstaunlicherweise ist dies schon für relativ kleine Gruppen der Fall (daher die Bezeichnung &quot;Geburtstagsparadoxon&quot;).</p>
</blockquote>
<p>das gegebene klassendiagramm:<br />
<a href="http://img204.imageshack.us/my.php?image=klassendiagrammrm8.png" rel="nofollow">http://img204.imageshack.us/my.php?image=klassendiagrammrm8.png</a><br />
und hier meine klassenimplementationen:</p>
<pre><code>/*
 *  Group.h
 *  Geburtstagsparadoxon 
 *
 */
#ifndef GROUP_H
#define GROUP_H
#include &quot;Date.h&quot;

class Group {

private:
	Date birthdays[200];
	int size;

public:
	Group();

	bool birthdayOnTheSameDay();
	void sort();
	void print();
	bool isFull();

};
#endif
</code></pre>
<pre><code>/*
 *  Date.h
 *  Geburtstagsparadoxon
 *
 */
#ifndef DATE_H
#define DATE_H

class Date {

private:
	int dayInYear;
	int year;

public:
	Date();

	void setRandomDate();

	int getDayInYear();
	int getDayInMonth();

	int getMonth();
	int getYear();

	void print();

};
#endif
</code></pre>
<p>hier sind erlaeuterungen zu den ersten 2 methoden der klasse Date.h</p>
<blockquote>
<p>Der Standardkonstruktor von <strong>Date</strong> soll das erzeugte Objekt auf ein zufälliges Datum setzen, wie unter <strong>setRandomDate</strong> beschrieben.</p>
<p><strong>setRandomDate</strong> soll die Datenelemente <strong>dayInYear</strong> und <strong>year</strong> unter den folgenden Randbedingungen setzen: <strong>dayInYear</strong> soll auf zufällige Weise so gesetzt werden, dass jeder der 365 Tage eines Jahres (Schaltjahre werden nicht berücksichtigt) mit der gleichen Wahrscheinlichkeit auftritt. Der Wert für <strong>year</strong> soll zufällig und gleichverteilt aus dem Bereich 1950 bis 2007 (jeweils einschließlich) genommen werden.</p>
</blockquote>
<p>hier meine erste implementation des standardkonstruktors und der setRandomDate funktion:</p>
<pre><code class="language-cpp">// standardkonstruktor
Date::Date()
{
	dayInYear = 0;
	year = 0;

	int dateZufallsDatum = 0;
	dateZufallsDatum = 1 + rand() % 365;

	cout &lt;&lt; &quot;Vom Standardkonstruktor gesetztes Zufallsdatum: &quot; &lt;&lt; dateZufallsDatum &lt;&lt; endl;
}
</code></pre>
<pre><code class="language-cpp">// setRandomDate
void Date::setRandomDate()
{
	dayInYear = 0;
	year = 0;

	const int ANFANGSJAHR = 1950;
	const int ENDJAHR = 2007;
	const int DIFFERENZ = ANFANGSJAHR - ENDJAHR;

	cout &lt;&lt; &quot;Funktion setRandomDate: &quot;;

	int zufallsDatum = 0;
	zufallsDatum = 1 + rand() % 365;
	dayInYear = zufallsDatum;

	cout &lt;&lt; &quot;setRandomDate Zufallsdatum &quot;;
	cout &lt;&lt; zufallsDatum &lt;&lt; endl;

	for(int i = ANFANGSJAHR; i &lt;= ENDJAHR; i++) {
		int welchesJahrWirdAusgegeben = 0;
		welchesJahrWirdAusgegeben = 1 + rand() % DIFFERENZ;
		year = welchesJahrWirdAusgegeben;
	}
	cout &lt;&lt; &quot;Zufallsjahr zwichen 1957 und 2007: &quot;;
	cout &lt;&lt; year &lt;&lt; &quot; &quot; &lt;&lt; endl;
}
</code></pre>
<p>und die main.cpp</p>
<pre><code class="language-cpp">// main.cpp
//

#include &quot;Group.h&quot;
#include &quot;Date.h&quot;

#include &lt;iostream&gt;
using namespace std;

#include &lt;cstdlib&gt;
using std::rand;
using std::srand;

#include &lt;ctime&gt;
using std::time;

int main (int argc, char * const argv[]) {
    // insert code here...

	srand(time(0));

	Date neuesDatum;

	neuesDatum.setRandomDate();	

	return 0;
}
</code></pre>
<p>waere super wenn jmd mein bisheriges &quot;werk&quot; absegnen koennte. bzw mir sagt was ich besser machen kann oder schon richtig gemacht habe.</p>
<p>danke und gruss,<br />
buk</p>
<p>--- links ---<br />
[1] <a href="http://de.wikipedia.org/wiki/Geburtstagsparadoxon" rel="nofollow">http://de.wikipedia.org/wiki/Geburtstagsparadoxon</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655740</guid><dc:creator><![CDATA[buk]]></dc:creator><pubDate>Sat, 31 Jan 2009 22:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to Das Geburtstagsparadoxon on Sat, 31 Jan 2009 22:51:20 GMT]]></title><description><![CDATA[<p>die schleife in setRandomDate ist ganz unnötig.</p>
<p>&quot;aus dem Bereich 1950 bis 2007 (jeweils einschließlich)&quot;<br />
geht mit</p>
<pre><code class="language-cpp">year=1950+rand()%(2007-1950+1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1655743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655743</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 31 Jan 2009 22:51:20 GMT</pubDate></item><item><title><![CDATA[Reply to Das Geburtstagsparadoxon on Sat, 31 Jan 2009 23:03:39 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>die schleife in setRandomDate ist ganz unnötig.</p>
<p>&quot;aus dem Bereich 1950 bis 2007 (jeweils einschließlich)&quot;<br />
geht mit</p>
<pre><code class="language-cpp">year=1950+rand()%(2007-1950+1);
</code></pre>
</blockquote>
<p>danke schonmal! ich haette alle besonderheiten der methoden posten sollen... deine funktion bringt mich mit folgenden methoden in &quot;diskrepanzen&quot; ...</p>
<blockquote>
<p><strong>getDayInMonth</strong> und <strong>getMonth</strong> sollen den im Datenelement <strong>dayInYear</strong> gespeicherten Tag in der üblichen Form ‚Tag im Monat’ bzw. ‚Monat’ zurückgeben. Hat <strong>dayInYear</strong> also z.B. den Wert 35, gibt <strong>getDayInMonth</strong> den Wert 4 und <strong>getMonth</strong> den Wert 2 zurück.</p>
<p><strong>print</strong> soll das im Date -Objekt enthaltene Datum in der Form ‚04.02.1992’ auf dem Bildschirm ausgeben.</p>
</blockquote>
<p>wenn ich die methode um diese uhrzeit richtig verstanden habe, muss ich dann die zahl - zwischen 1950 und 2007 - die ich mit meiner schleife rausbekomme so umrechnen wie angegeben:</p>
<blockquote>
<p>Hat <strong>dayInYear</strong> also z.B. den Wert 35, gibt <strong>getDayInMonth</strong> den Wert 4 und getMonth den Wert 2 zurück.</p>
</blockquote>
<p>oder... ?!</p>
<p>gruss,<br />
buk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655745</guid><dc:creator><![CDATA[buk]]></dc:creator><pubDate>Sat, 31 Jan 2009 23:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to Das Geburtstagsparadoxon on Sat, 31 Jan 2009 23:42:50 GMT]]></title><description><![CDATA[<p>Die ganze Date Klasse ist IMO unnötig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Die Jahreszahl wird sowieso beim Vergleich ignoriert, die hat bloss Einfluss darauf ob es einen 29. Feb. gibt. Das kann man IMO viel einfacher lösen, indem man die Nummer des Tages (vom 1. Jänner weg gezählt) in einen int knallt. Den 29. Feb. übergeht man dabei beim Zählen, und hängt ihn hinten an.<br />
Das Erstellen eines Geburtsdatums reduziert sich dadurch auf</p>
<pre><code class="language-cpp">bool is_leap_year = ...;
int date = get_random_number(365 + is_leap_year);
</code></pre>
<p>Die Group-Klasse würde ich auch weglassen. IMO macht es bei dieser Aufgabe kaum Sinn irgendwelche eigenen Klassen zu definieren. Maximal eine Klasse für die gesamte &quot;Simulation&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655753</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 31 Jan 2009 23:42:50 GMT</pubDate></item><item><title><![CDATA[Reply to Das Geburtstagsparadoxon on Sat, 31 Jan 2009 23:54:11 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Die ganze Date Klasse ist IMO unnötig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Die Jahreszahl wird sowieso beim Vergleich ignoriert, die hat bloss Einfluss darauf ob es einen 29. Feb. gibt. Das kann man IMO viel einfacher lösen, indem man die Nummer des Tages (vom 1. Jänner weg gezählt) in einen int knallt. Den 29. Feb. übergeht man dabei beim Zählen, und hängt ihn hinten an.<br />
Das Erstellen eines Geburtsdatums reduziert sich dadurch auf</p>
<pre><code class="language-cpp">bool is_leap_year = ...;
int date = get_random_number(365 + is_leap_year);
</code></pre>
<p>Die Group-Klasse würde ich auch weglassen. IMO macht es bei dieser Aufgabe kaum Sinn irgendwelche eigenen Klassen zu definieren. Maximal eine Klasse für die gesamte &quot;Simulation&quot;.</p>
</blockquote>
<p>es soll keine schaltjahre geben.<br />
ich halte die Group-klasse für eine recht passende idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655756</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 31 Jan 2009 23:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to Das Geburtstagsparadoxon on Sun, 01 Feb 2009 09:09:29 GMT]]></title><description><![CDATA[<p>guude,</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Die Group-Klasse würde ich auch weglassen. IMO macht es bei dieser Aufgabe kaum Sinn irgendwelche eigenen Klassen zu definieren. Maximal eine Klasse für die gesamte &quot;Simulation&quot;.</p>
</blockquote>
<p>ich kann da nichts weglassen, die aufgabestellung ist so und so aenlich wird auch die klausur aufgabe.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>es soll keine schaltjahre geben.<br />
ich halte die Group-klasse für eine recht passende idee.</p>
</blockquote>
<p>genau, schaltjahre werden nicht beruecksichtigt. die klasse <strong>Date</strong> soll die klasse <strong>Group</strong> unterstuetzen. so ich versuche nun mal die methoden <strong>getDayInMonth</strong> und <strong>getMonth</strong> gebacken zu bekommen und melde mich heute abend nochmal.</p>
<p>danke schonmal fuer eure antworten.</p>
<p>gruss,<br />
buk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655792</guid><dc:creator><![CDATA[buk]]></dc:creator><pubDate>Sun, 01 Feb 2009 09:09:29 GMT</pubDate></item><item><title><![CDATA[Reply to Das Geburtstagsparadoxon on Sun, 01 Feb 2009 23:53:54 GMT]]></title><description><![CDATA[<p>Oh, sorry, wenn das zur Aufgabenstellung gehört... kannst du wohl nicht aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656268</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 01 Feb 2009 23:53:54 GMT</pubDate></item></channel></rss>