<?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[Zufallszahlen für einen Lottogenerator]]></title><description><![CDATA[<p>hallo alle,</p>
<p>ich benutze folgenden Code für meinen lottogenerator</p>
<pre><code class="language-cpp">int richtige=0;
		int cur=0;
		int moeglich[49]; 
                //m_moeglich: array mit den zahlen von 1 - 49
                //m_zahlen  : array mit dem von user eingegebenen zahlen
		while(!beenden())
		{	
			memcpy(moeglich,m_moeglich,sizeof(moeglich));
			for(int upbond=49;upbond&gt;43;upbond--)
			{
				//Zufallszahl ermitteln
			  int ignoreBoundary = (RAND_MAX/(upbond-1) ) * (upbond);
			  do
				{
				 cur = std::rand();
				} 
				while (cur &gt; ignoreBoundary); 
			  cur=cur%(upbond);
			  swap(&amp;moeglich[cur],&amp;moeglich[upbond-1]);	 
				//wurde diese Zahl getippt?
				for(int k=0;k&lt;6;k++)
					if(m_zahlen[k]==moeglich[upbond-1])
						richtige++;
            }
			  result[richtige]++;
			  if(richtige==6)
				return 1;
			  richtige=0;
		}
</code></pre>
<p>Wie ihr sicher bemerkt hab benutze ich teilweise Code hier aus dem C++ Magazin (Artikel: &quot;zufälle gibt's&quot;)</p>
<p>Mein Problem:<br />
wenn ich die wikipedia hier <a href="http://de.wikipedia.org/wiki/Lotto#Gewinnwahrscheinlichkeit" rel="nofollow">http://de.wikipedia.org/wiki/Lotto#Gewinnwahrscheinlichkeit</a><br />
richtig verstanden hab, müßte im schnitt bei ca. 14 Mio Ziehungen zum ersten mal 6 richtige gezogen werden.</p>
<p>Bei mir geschieht dies allerdings meist schon bei 6-8 Mio Ziehungen.<br />
Außerdem erhalte ich sehr unterschiedliche Ergebnisse wenn ich bei einem Durchlauf 1,2,3,4,5,6 nehme und beim anderen 44,45,46,47,48,49</p>
<p>Wo liegt mein(e)Fehler?</p>
<p>danke schon mal und fröhliche weihnachten allen :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201058/zufallszahlen-für-einen-lottogenerator</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 21:53:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201058.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Dec 2007 17:57:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Sun, 23 Dec 2007 17:57:35 GMT]]></title><description><![CDATA[<p>hallo alle,</p>
<p>ich benutze folgenden Code für meinen lottogenerator</p>
<pre><code class="language-cpp">int richtige=0;
		int cur=0;
		int moeglich[49]; 
                //m_moeglich: array mit den zahlen von 1 - 49
                //m_zahlen  : array mit dem von user eingegebenen zahlen
		while(!beenden())
		{	
			memcpy(moeglich,m_moeglich,sizeof(moeglich));
			for(int upbond=49;upbond&gt;43;upbond--)
			{
				//Zufallszahl ermitteln
			  int ignoreBoundary = (RAND_MAX/(upbond-1) ) * (upbond);
			  do
				{
				 cur = std::rand();
				} 
				while (cur &gt; ignoreBoundary); 
			  cur=cur%(upbond);
			  swap(&amp;moeglich[cur],&amp;moeglich[upbond-1]);	 
				//wurde diese Zahl getippt?
				for(int k=0;k&lt;6;k++)
					if(m_zahlen[k]==moeglich[upbond-1])
						richtige++;
            }
			  result[richtige]++;
			  if(richtige==6)
				return 1;
			  richtige=0;
		}
</code></pre>
<p>Wie ihr sicher bemerkt hab benutze ich teilweise Code hier aus dem C++ Magazin (Artikel: &quot;zufälle gibt's&quot;)</p>
<p>Mein Problem:<br />
wenn ich die wikipedia hier <a href="http://de.wikipedia.org/wiki/Lotto#Gewinnwahrscheinlichkeit" rel="nofollow">http://de.wikipedia.org/wiki/Lotto#Gewinnwahrscheinlichkeit</a><br />
richtig verstanden hab, müßte im schnitt bei ca. 14 Mio Ziehungen zum ersten mal 6 richtige gezogen werden.</p>
<p>Bei mir geschieht dies allerdings meist schon bei 6-8 Mio Ziehungen.<br />
Außerdem erhalte ich sehr unterschiedliche Ergebnisse wenn ich bei einem Durchlauf 1,2,3,4,5,6 nehme und beim anderen 44,45,46,47,48,49</p>
<p>Wo liegt mein(e)Fehler?</p>
<p>danke schon mal und fröhliche weihnachten allen :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425297</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Sun, 23 Dec 2007 17:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Tue, 20 May 2008 22:45:08 GMT]]></title><description><![CDATA[<p>is zwar lange her aber: hat da keiner eine idee? <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513457</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Tue, 20 May 2008 22:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Tue, 20 May 2008 23:22:22 GMT]]></title><description><![CDATA[<p>müssten das nicht 49*48*47...*44 möglichkeiten sein?! also weit mehr als 14mio?!</p>
<pre><code class="language-cpp">for(int upbond=49;upbond&gt;43;upbond--)
</code></pre>
<p>boa ist das kacke.... unglaublich!</p>
<pre><code class="language-cpp">//wurde diese Zahl getippt?
                for(int k=0;k&lt;6;k++)
                    if(m_zahlen[k]==moeglich[upbond-1])
                        richtige++;
</code></pre>
<p>habs nur überflogen, aber kennst du da so eine anspielung, wo ein affe auf einer schreibmaschiene einhämmert bis mal ein satz aus shakespeare herauskommt?!<br />
ich denke du solltest 6 zahlen auf einmal in ein array schreiben und alle 6 danach <strong>seperat</strong> überprüfen. dann müsste es klappen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513461</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Tue, 20 May 2008 23:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Tue, 20 May 2008 23:39:56 GMT]]></title><description><![CDATA[<p>dgrat schrieb:</p>
<blockquote>
<p>müssten das nicht 49*48*47...*44 möglichkeiten sein?! also weit mehr als 14mio?!</p>
</blockquote>
<p>nur, wenn die Reihenfolge eine Rolle spielt</p>
<p>in dem Fall musst du danach noch durch 720 (6!) teilen, um auf die knapp 14Mio. Möglichkeiten zu kommen</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/26836">@Topic</a>: du brauchst maximal 14Mio durchläufe, nicht im Schnitt. Von daher dürfte dein Ergebnis schon stimmen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513464</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Tue, 20 May 2008 23:39:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Wed, 21 May 2008 11:37:27 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17203">@zwutz</a> thx. das ich darauf nicht gekommen bin <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="🙂"
    /> *schäm*</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/26451">@dgrat</a> kein grund beleidigend zu werden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513480</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Wed, 21 May 2008 11:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Wed, 21 May 2008 11:57:32 GMT]]></title><description><![CDATA[<p>das geht mit c++ doch eleganter, oder?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;

using namespace std;

void lotto(vector&lt;int&gt; &amp;ergebnis)
{
    vector&lt;int&gt; kugeln(49);
    for (int i = 1; i &lt;= 49; ++i) kugeln[i] = i;
    random_shuffle(kugeln.begin(), kugeln.end());

    ergebnis.resize(6);
    copy(kugeln.begin(), kugeln.begin() + 6, ergebnis.begin());
    sort(ergebnis.begin(), ergebnis.end());
}

int main()
{
    srand(time(0)); //Zufallsgenerator initialisieren

    vector&lt;int&gt; lottozahlen;
    lotto(lottozahlen);
    copy(lottozahlen.begin(), lottozahlen.end(), ostream_iterator&lt;int&gt;(cout, &quot; &quot;));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1513492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513492</guid><dc:creator><![CDATA[komplikator]]></dc:creator><pubDate>Wed, 21 May 2008 11:57:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Wed, 21 May 2008 15:40:05 GMT]]></title><description><![CDATA[<p>also es wären in seinem fall nicht maximal 14 mio durchgänge, weil nicht jede kombination durchgezählt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513695</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Wed, 21 May 2008 15:40:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Wed, 21 May 2008 19:39:08 GMT]]></title><description><![CDATA[<p>komplikator schrieb:</p>
<blockquote>
<p>das geht mit c++ doch eleganter, oder?</p>
</blockquote>
<p>möglich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1513875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1513875</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Wed, 21 May 2008 19:39:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Thu, 22 May 2008 03:54:49 GMT]]></title><description><![CDATA[<p>komplikator schrieb:</p>
<blockquote>
<p>das geht mit c++ doch eleganter, oder?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;

using namespace std;

void lotto(vector&lt;int&gt; &amp;ergebnis)
{
    vector&lt;int&gt; kugeln(49);
    for (int i = 1; i &lt;= 49; ++i) kugeln[i] = i;
    random_shuffle(kugeln.begin(), kugeln.end());

    ergebnis.resize(6);
    copy(kugeln.begin(), kugeln.begin() + 6, ergebnis.begin());
    sort(ergebnis.begin(), ergebnis.end());
}

int main()
{
    srand(time(0)); //Zufallsgenerator initialisieren

    vector&lt;int&gt; lottozahlen;
    lotto(lottozahlen);
    copy(lottozahlen.begin(), lottozahlen.end(), ostream_iterator&lt;int&gt;(cout, &quot; &quot;));
}
</code></pre>
</blockquote>
<pre><code class="language-cpp">int main(int argc, char** argv) {
	srand(time(0));
	std::set&lt;int&gt; bla;
	for(int i=0; i&lt;6; ){
		if(bla.insert(rand()%49+1).second) {
			i++;
		}
	}
	std::copy(bla.begin(), bla.end(), std::ostream_iterator&lt;int&gt;(std::cout, &quot; &quot;));

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1514023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514023</guid><dc:creator><![CDATA[shorter]]></dc:creator><pubDate>Thu, 22 May 2008 03:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Thu, 22 May 2008 08:35:30 GMT]]></title><description><![CDATA[<p>shorter schrieb:</p>
<blockquote>
<p>…</p>
</blockquote>
<p>Es ging um <strong>eleganter</strong>, nicht <em>kürzer</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1514068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514068</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 22 May 2008 08:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Thu, 22 May 2008 09:16:38 GMT]]></title><description><![CDATA[<p>Und was is warum eleganter? Ne Funktion kann ich auch noch draus machen, wenns sein muss...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1514100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514100</guid><dc:creator><![CDATA[shorter]]></dc:creator><pubDate>Thu, 22 May 2008 09:16:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Thu, 22 May 2008 09:22:59 GMT]]></title><description><![CDATA[<p>shorter schrieb:</p>
<blockquote>
<p>Und was is warum eleganter?</p>
</blockquote>
<p>Eine effiziente Lösung. Deine ist nicht effizient, weil sie keine definitiv berechnenbare Laufzeit besitzt. Wenn man Pech hat, dauert Deine Lösung ewig, weil immer wieder dieselbe Zahl erwürfelt wird. Die Lösung von „komplikator“ hingegen hat definitiv lineare Laufzeit … was hier nicht sonderlich interessant ist, da die Eingabegrößen fest sind, aber es ist eben dadurch garantiert, dass jeder Funktionsaufruf gleichlange braucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1514107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514107</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 22 May 2008 09:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Thu, 22 May 2008 09:32:34 GMT]]></title><description><![CDATA[<p>Wenn du nicht gerade nen total beschissenen Zufallszahlengenerator hast, der immer nur das gleichen Muster liefert, dann kommt meine auch immer zu ner Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1514117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514117</guid><dc:creator><![CDATA[shorter]]></dc:creator><pubDate>Thu, 22 May 2008 09:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Thu, 22 May 2008 09:37:33 GMT]]></title><description><![CDATA[<p>shorter schrieb:</p>
<blockquote>
<p>Wenn du nicht gerade nen total beschissenen Zufallszahlengenerator hast, der immer nur das gleichen Muster liefert, dann kommt meine auch immer zu ner Lösung.</p>
</blockquote>
<p>Du scheinst das Konzept von „Zufall“ nicht verstanden zu haben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>Es geht ja auch gar nicht darum, dass der Code tatsächlich „ewig“ läuft, aber ein paar Sekunden, statt ein paar Millisekunden für den anderen Code, sind schon realistisch. Außerdem geht es hier ja auch ums Prinzip (Eleganz …), und vom Prinzip her ist Dein Code eben mangelhaft, weil er sich auf trial &amp; error verlässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1514123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514123</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 22 May 2008 09:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen für einen Lottogenerator on Thu, 22 May 2008 11:07:30 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>shorter schrieb:</p>
<blockquote>
<p>Wenn du nicht gerade nen total beschissenen Zufallszahlengenerator hast, der immer nur das gleichen Muster liefert, dann kommt meine auch immer zu ner Lösung.</p>
</blockquote>
<p>Du scheinst das Konzept von „Zufall“ nicht verstanden zu haben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>Es geht ja auch gar nicht darum, dass der Code tatsächlich „ewig“ läuft, aber ein paar Sekunden, statt ein paar Millisekunden für den anderen Code, sind schon realistisch. Außerdem geht es hier ja auch ums Prinzip (Eleganz …), und vom Prinzip her ist Dein Code eben mangelhaft, weil er sich auf trial &amp; error verlässt.</p>
</blockquote>
<p>Nicht mal sowas verrücktes braucht Sekunden, sondern nur Millisekunden</p>
<pre><code class="language-cpp">srand(time(0));
	std::set&lt;int&gt; bla;
	for(int i=0; i&lt;49; ){
		if(bla.insert(rand()%49+1).second) {
			i++;
		}
	}
	std::copy(bla.begin(), bla.end(), std::ostream_iterator&lt;int&gt;(std::cout, &quot; &quot;));
</code></pre>
<p>So ein verrücker Zufall <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1514186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514186</guid><dc:creator><![CDATA[shorter]]></dc:creator><pubDate>Thu, 22 May 2008 11:07:30 GMT</pubDate></item></channel></rss>