<?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[4 verschiedenen (Zufalls-)Zahlen]]></title><description><![CDATA[<p>Moin,<br />
ich möchte, dass am Ende 4 verschiedene Zahlen in ein Array geschrieben sind.<br />
Bisher hab ich diesen Code, der allerdings noch nicht wirklich funktionstüchtig ist. Allerdings komme ich nicht mehr weiter:</p>
<pre><code class="language-cpp">...
int max=6;
srand(time(0));
int array[4];
for(int i=0; i&lt;4; i=i+1)
{
	int zzahl = rand() % max + 1;	
	array[i]=zzahl;	
	for(int j=0; j&lt;4; j=j+1)
	{
		while(array[i]==array[i-j]&amp;&amp;i!=0) 
		{
				int zzahl = rand() % max + 1;
				array[i]=zzahl;
				break;
		}
	}
}
cout&lt;&lt;array[0]&lt;&lt;array[1]&lt;&lt;array[2]&lt;&lt;array[3];
...
</code></pre>
<p>Soweit so gut: Mit der While Schleife will ich eigentlich überprüfen, ob der neue Wert[i] mit irgendeinem schon vergebenen Wert[i-j] übereinstimmt und, falls das der Fall ist, einen neuen Wert zuweisen.</p>
<p>Leider klappt das nicht.<br />
Hoffe mein Problem ist klar geworden und jemand hat eine Lösung oder hilft mir meine Denkblockade zu entfernen</p>
<p>Gruß loik</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/225906/4-verschiedenen-zufalls-zahlen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 13:20:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/225906.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Oct 2008 19:22:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Sun, 26 Oct 2008 19:39:55 GMT]]></title><description><![CDATA[<p>Moin,<br />
ich möchte, dass am Ende 4 verschiedene Zahlen in ein Array geschrieben sind.<br />
Bisher hab ich diesen Code, der allerdings noch nicht wirklich funktionstüchtig ist. Allerdings komme ich nicht mehr weiter:</p>
<pre><code class="language-cpp">...
int max=6;
srand(time(0));
int array[4];
for(int i=0; i&lt;4; i=i+1)
{
	int zzahl = rand() % max + 1;	
	array[i]=zzahl;	
	for(int j=0; j&lt;4; j=j+1)
	{
		while(array[i]==array[i-j]&amp;&amp;i!=0) 
		{
				int zzahl = rand() % max + 1;
				array[i]=zzahl;
				break;
		}
	}
}
cout&lt;&lt;array[0]&lt;&lt;array[1]&lt;&lt;array[2]&lt;&lt;array[3];
...
</code></pre>
<p>Soweit so gut: Mit der While Schleife will ich eigentlich überprüfen, ob der neue Wert[i] mit irgendeinem schon vergebenen Wert[i-j] übereinstimmt und, falls das der Fall ist, einen neuen Wert zuweisen.</p>
<p>Leider klappt das nicht.<br />
Hoffe mein Problem ist klar geworden und jemand hat eine Lösung oder hilft mir meine Denkblockade zu entfernen</p>
<p>Gruß loik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605226</guid><dc:creator><![CDATA[loik]]></dc:creator><pubDate>Sun, 26 Oct 2008 19:39:55 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Sun, 26 Oct 2008 20:09:23 GMT]]></title><description><![CDATA[<p>Moin,<br />
bin ein bisschen weitergekommen und hab einige Dumme Fehler selbst gefunden, nur funktionieren tut das ganze immernoch nicht so wie ich es möchte:</p>
<pre><code class="language-cpp">...
int max=6;
srand(time(0));
int array[4];
for(int i=0; i&lt;4; i=i+1)
{
	int zzahl = rand() % max + 1;	
	array[i]=zzahl;	
	for(int j=1; j&lt;4; j=j+1)
	{
		if(i!=0)
		{
			while(array[i]==array[i-j])
			{
					int zzahl = rand() % max + 1;
					array[i]=zzahl;
			}
		}
	}
}
cout&lt;&lt;array[0]&lt;&lt;array[1]&lt;&lt;array[2]&lt;&lt;array[3];
...
</code></pre>
<p>Das Problem liegt nach wie vor in der While Schleife: Zwar erkennt das Programm nun richtig, dass ein Wert schon da war, aber wenn er den Wert neu setzt, überprüft er dies nicht nocheinmal ...</p>
<p>Hoffe es gibt eine einfache Möglichkeit mir dabei zu helfen.</p>
<p>Gruß loik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605245</guid><dc:creator><![CDATA[loik]]></dc:creator><pubDate>Sun, 26 Oct 2008 20:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Mon, 27 Oct 2008 08:10:26 GMT]]></title><description><![CDATA[<p>Also ich habe rege Mühe zu verstehen, was du mit deinem Code machen willst.<br />
Ich weiss zwar, was du machen willst, aber dein Code ist sehr verwirrend und wird so wahrscheinlich niemals dein gewünschtes Ergebnis beinhalten. <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>Probier dein Problem ein wenig zu konkretisieren und dir besser zu überlegen, welche Schritte dazu notwendig sind.</p>
<p>Also ich würde vorschlagen, dass du das ganze mal löscht und dir Gedanken macht, was du willst und was da alles für Schritte notwendig sind.</p>
<p>Ich persönlich würde da einen ganz anderen Ansatz wählen für dein Problem.<br />
Ich würde da einfach ein Array mit allen 6 Zahlen füllen, die möglich sind. <a href="http://www.cplusplus.com/reference/algorithm/random_shuffle.html" rel="nofollow">std::random_shuffle</a> darauf anwenden und dann 4 Zahlen da rauspicken.<br />
Aber du kannst es ruhig auch mal durch deinen Ansatz versuchen. Ist sicher lehrreicher, als der std:: - Ansatz. <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>btw:<br />
Warum machst du für die Ausgabe nicht auch einfach eine Schleife?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605358</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 27 Oct 2008 08:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Mon, 27 Oct 2008 14:45:22 GMT]]></title><description><![CDATA[<p>Jo, vielen dank!<br />
Nach etwa so einer Funktion habe ich gesucht:)</p>
<p>Falls es von interesse ist:<br />
Meine Überlegungen:<br />
1. ich möchte 4 Zahlen in einen Array packen -&gt; Zufallszahl(1-max)</p>
<pre><code class="language-cpp">for(int i=0; i&lt;4; i=i+1)
{
    int zzahl = rand() % max + 1;   
    array[i]=zzahl;
</code></pre>
<p>2. Überprüfen ob ein Wert in diesem Array schonmal vorkam</p>
<pre><code class="language-cpp">for(int j=1; j&lt;4; j=j+1)
    {
        if(i!=0)
        {
            while(array[i]==array[i-j])
            {
</code></pre>
<p>3. und falls ja, eine neue Zufallszahl in den Array speichern</p>
<pre><code class="language-cpp">int zzahl = rand() % max + 1;
                    array[i]=zzahl;
            }
        }
    }
}
</code></pre>
<p>Ich glaube durchaus, dass es möglich wäre auf diese Weise zu meinem gewünschten Ergebnis zu gelangen,<br />
da mir jetzt aber eine &quot;bessere&quot; Lösung gesagt wurde, benutze ich auch diese.</p>
<p>Gruß loik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605572</guid><dc:creator><![CDATA[loik]]></dc:creator><pubDate>Mon, 27 Oct 2008 14:45:22 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Mon, 27 Oct 2008 14:58:26 GMT]]></title><description><![CDATA[<p>Also ich würde es mit einer einfachen for-Schleife regeln:</p>
<pre><code class="language-cpp">for(int i=0;i&lt;4;i++){
  array[i] = rand() % max + 1;
}
</code></pre>
<p>So wird in jedes der 4 Elemente eine eigene Zufallszahl geschrieben. Du benötigst lediglich, wie du es ja bereits schon stehen hattest,</p>
<pre><code class="language-cpp">int max;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">srand(time(0));
int array[4];
</code></pre>
<p>Und die Ausgabe kannst du ebenfalls mit der for-Schleife lösen:</p>
<pre><code class="language-cpp">for(i=0;i&lt;4;i++){
cout&lt;&lt;array[i]&lt;&lt;endl;
}
</code></pre>
<p>Also das wäre meine Lösung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605589</guid><dc:creator><![CDATA[KeksX]]></dc:creator><pubDate>Mon, 27 Oct 2008 14:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Mon, 27 Oct 2008 15:08:31 GMT]]></title><description><![CDATA[<p>KeksX schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Dann hat er aber auch mit einer 4:max Wahrscheinlichkeit Dubletten in seinem Array, und das will er nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605591</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 27 Oct 2008 15:08:31 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Mon, 27 Oct 2008 19:07:27 GMT]]></title><description><![CDATA[<p>loik schrieb:</p>
<blockquote>
<p>Meine Überlegungen:<br />
1. ich möchte 4 Zahlen in einen Array packen -&gt; Zufallszahl(1-max)<br />
2. Überprüfen ob ein Wert in diesem Array schonmal vorkam<br />
3. und falls ja, eine neue Zufallszahl in den Array speichern</p>
</blockquote>
<p>Dieser Ansatz ist ziemlich subobtimal, da er eine exponentielle Zeitkomplexität (<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    />) mit sich bringt.</p>
<p>Du musst bedenken, dass bei jedem neuen Element die vorhergehenden Elemente überprüft werden. Zudem wird die Wahrscheinlichkeit, dass ein Element bereits vorkommt, mit zunehmendem Fortschritt grösser. Das wirkt sich bei grossen Arrays fatal aus.</p>
<p>Deshalb würde ich etwas Ähnliches wie <code>std::random_shuffle()</code> implementieren, sodass das Array zuerst erstellt wird und dann zufällig Elemente vertauscht werden. Dann läuft dein Algorithmus auch in O(n), ist also linear von der Anzahl der Elemente abhängig.</p>
<p>Statt Arrays würde ich dir auch raten, STL-Container zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605730</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 27 Oct 2008 19:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Tue, 28 Oct 2008 09:36:35 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Dieser Ansatz ist ziemlich subobtimal, da er eine exponentielle Zeitkomplexität (<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    />) mit sich bringt.</p>
</blockquote>
<p>Ich glaube kaum, dass er weiss, was das jetzt bedeutet, noch relevant für ihn ist. <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>Zu deinem Code:</p>
<p>Mal ein wenig allgemein:</p>
<pre><code class="language-cpp">i = i + 1; // ist das gleiche, wie:
i++; // (post-inkrement) oder:
++i; // (pre-inkrement)
</code></pre>
<p>Das einzige, was du da beachten musst ist der Rückgabewert:</p>
<pre><code class="language-cpp">int i = 2;
if (i++ == 3)... // Bedingung nicht erfüllt, da i inkrementiert wird und dann das &quot;alte&quot; i zurückgegeben wird
i = 2;
if (++i == 3)...//Bedingung erfüllt, da i inkrementiert wird und auch zurückgegeben wird
</code></pre>
<p>Das siehst du vor allem in Schleifenausdrücken.</p>
<pre><code class="language-cpp">while(array[i]==array[i-j])
</code></pre>
<p>Das ist äusserst gefährlich. OK. i ist sicher grösser 0, aber was ist den jetzt, wenn i 1 ist und j 2? array[-1] ?! Spätestens hier sollte sich dein Programm aufhängen. <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="😉"
    /> (ich bin mir nicht sicher, ob du das ev. als &quot;bis&quot; gelesen hast und nicht als &quot;minus&quot;..?! Ist das möglich? )</p>
<p>Man kann das Problem durchaus durch deinen Ansatz lösen, aber das erfordert ein weng mehr Aufmerksamkeit, als meine Variante. <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="😉"
    /> - Das sie ineffizienter ist mal davon abgesehen. (wie korrekt von Nexus bemängelt)</p>
<p>Wen ich Zeit finde (und Lust habe), werde ich das nachher mal kurz machen. <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>EDIT:<br />
Hier, habs nicht ausführlich getestet, sollte aber laufen..</p>
<pre><code class="language-cpp">void calc ()
{
	int zahlen[4];
	int max = 6;

	//zuerst mal alles leeren
	for (int i = 0; i &lt; 4 ; ++i)
	{
		zahlen[ i ] = 0;
	}

	//für jede Stelle
	for (int i = 0; i &lt; 4 ; ++i)
	{
		//eine Zahl bekommen
		zahlen [ i ] = rand () % max + 1;

		//mit jeder anderen vergleichen
		for (int y = 0; y &lt; 4;)
		{
			//Wenn y == i, dann wäre es ein vergleich mit sich selbs, also überspringen
			if ( y == i)
			{
				++y;
				continue;
			}

			//Wenn wir eine Gleichheit haben 
			if ( zahlen [ i ] == zahlen [ y ] )
			{
				//Nochmal probieren
				zahlen [ i ] = rand () % max + 1;

				//jetzt könnten wir einen Konflikt mit einer anderen Zahl haben
				//also nochmal von Anfang an
				y = 0;
			}
			else
				++y;
		}
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1605907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605907</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 28 Oct 2008 09:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Tue, 28 Oct 2008 14:08:30 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Ich glaube kaum, dass er weiss, was das jetzt bedeutet, noch relevant für ihn ist. <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>
</blockquote>
<p>Nun ja, ich wollte ihn einfach darauf hinweisen, da er ja seine Überlegungen präsentiert hat. Bei Wikipedia findet man unter Zeitkomplexität z.B. relativ schnell etwas. Im Übrigen hab ich ja anschliessend noch erläutert, wieso der Algorithmus in O(2<sup>x</sup>) wächst.</p>
<p>Sich ein bisschen mit Zeitkomplexität und Laufzeit auszukennen kann sowieso nicht schaden. <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>Aber gut, dass du dir extra noch Zeit für den Code genommen hast. <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/1606076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606076</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 28 Oct 2008 14:08:30 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Tue, 28 Oct 2008 14:36:21 GMT]]></title><description><![CDATA[<p>[quote=&quot;Nexus&quot;]</p>
<p>drakon schrieb:</p>
<blockquote>
<p>... wieso der Algorithmus in O(2<sup>x</sup>) wächst</p>
</blockquote>
<p>Mal abgesehen davon, dass die Komplexität auch von der Anzahl der möglichen Zufallssymbole abhängt, und dass die ganze Geschichte ohnehin nicht stabil ist, wie kommst Du auf O(2<sup>x</sup>)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606090</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 28 Oct 2008 14:36:21 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Tue, 28 Oct 2008 15:03:40 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>O(2<sup>x</sup>)?</p>
</blockquote>
<p>Ich denke, das ist die Komplexitäts<strong>klasse</strong> für exponentielles Wachstum, oder? Man schreibt ja auch O(n), wenn die Anzahl Operationen 35*n + 7 beträgt...</p>
<p>Okay, n wäre vielleicht besser gewesen als x... Ist es das, was du meinst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606106</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 28 Oct 2008 15:03:40 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Tue, 28 Oct 2008 15:14:03 GMT]]></title><description><![CDATA[<p>So wie ich das sehe, ist die Komplexität O(n<sup>2</sup>). Wenn es blöd läuft, hat man eine Endlosschleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606112</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 28 Oct 2008 15:14:03 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Wed, 29 Oct 2008 08:21:39 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>So wie ich das sehe, ist die Komplexität O(n<sup>2</sup>). Wenn es blöd läuft, hat man eine Endlosschleife.</p>
</blockquote>
<p>Jo, klar, ich wollte ihm ja nur zeigen, wie das mit seinem Ansatz in etwa geht.. Einen besseren Vorschlag habe ich ja schon längst gemacht..;)</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>:<br />
5 Minuten sind nicht soo viel.. <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/1606390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606390</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:21:39 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Wed, 29 Oct 2008 13:13:50 GMT]]></title><description><![CDATA[<p>Hm... Tut mir leid, wenn ich was Falsches erzählt habe.</p>
<p>Quadratisch würde Sinn machen, da ja n Mal eine Zufallszahl erzeugt wird und jeweils die vorherigen Elemente überprüft werden. Jedoch ist das nicht alles.</p>
<p>Macht denn die Tatsache, dass gegen Ende der Sequenz die Wahrscheinlichkeit für eine noch nicht vorhandene Zufallszahl immer kleiner wird, nichts aus? Dadurch müssen bei einer bereits vorhandenen Zahl alle Elemente bis dahin noch einmal überprüft werden, was ja einen erheblichen Einfluss auf die Laufzeit hat.</p>
<p>Das war auch meine Überlegung; selbst wenn exponentiell vielleicht nicht stimmt, wächst die Average-Case-Laufzeit mehr als quadratisch. Beim letzten Element hat man beispielsweise nur eine Wahrscheinlichkeit von 1/n, genau die richtige Zahl zu treffen, was sich bei grossen n stark in die Länge ziehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606597</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 29 Oct 2008 13:13:50 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Tue, 04 Nov 2008 22:34:46 GMT]]></title><description><![CDATA[<p>Hmm... Gehört zwar vielleicht nicht mehr zur Ursprungsfrage, aber seid ihr ganz sicher, dass die Laufzeit quadratisch ist? Würde mich schon noch interessieren... <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/1610323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610323</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 04 Nov 2008 22:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Wed, 05 Nov 2008 08:52:35 GMT]]></title><description><![CDATA[<p>Du überprüfst jede Zahl mit jeder anderen. Wie lange das schlussendlich geht ist nicht die Frage. Tachyon hat ja bereits gesagt, dass man durchaus eine &quot;Endlosschleife&quot; hat. Wobei das auch nicht richtig ist. Der Algorithmus kann theoretisch 1000 Jahre laufen, aber ein Ende hat er immer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610414</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 05 Nov 2008 08:52:35 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Wed, 05 Nov 2008 09:14:55 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Du überprüfst jede Zahl mit jeder anderen. Wie lange das schlussendlich geht ist nicht die Frage. Tachyon hat ja bereits gesagt, dass man durchaus eine &quot;Endlosschleife&quot; hat. Wobei das auch nicht richtig ist. Der Algorithmus kann theoretisch 1000 Jahre laufen, aber ein Ende hat er immer.</p>
</blockquote>
<p>Woher willst Du das wissen? Wenn Du Pech (bzw. die Menge ausreichend Groß ist) hast, dann hast Du eine sich wiederholende Folge von Zufallszahlen (und irgendwann wird sie sich wiederholen, sofern es sich um die üblichen Pseudozufallszahlen handelt), bei der Du nur Dubletten produzierst. Wenn der Krempel bereits 1000 Jahre durch hat, ist das sogar ziemlich wahrscheinlich. <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="😉"
    /><br />
Das gibt dann eine echte Endlosschleife.<br />
Der Algorithmus für sich genommen hat jedenfalls O(n<sup>2</sup>). Das sieht man eigentlich ziemlich direkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610424</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 05 Nov 2008 09:14:55 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Wed, 05 Nov 2008 09:39:54 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>OK. Das hätte ich vlt. mal noch hinschreiben sollen, dass Vorausgesetzt ist, dass es kein PRNG sein sollte. - Hat ja eigentlich nichts mit dem Algorithmus selbst zu tun. <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>Ansonsten darf hinter rand ja auch sowas stehen:</p>
<pre><code class="language-cpp">int rand ()
{
return 2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1610433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610433</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 05 Nov 2008 09:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Wed, 05 Nov 2008 16:30:48 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Der Algorithmus für sich genommen hat jedenfalls O(n<sup>2</sup>). Das sieht man eigentlich ziemlich direkt.</p>
</blockquote>
<p>Naja, das ist wohl mehr oder weniger Übungssache. Mit Zeitkomplexität und Algorithmen kenne ich mich sowieso nicht wahnsinnig gut aus...</p>
<p>Aber ich dachte, die Komplexitätsklasse gebe an, in welchem Mass die Laufzeit wächst, wenn mehr Elemente dazukommen. Und das ist meiner Ansicht nach in diesem Falle mehr als quadratisch, deshalb kann ich es nicht ganz nachvollziehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610729</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 05 Nov 2008 16:30:48 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Wed, 05 Nov 2008 16:36:04 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Der Algorithmus für sich genommen hat jedenfalls O(n<sup>2</sup>). Das sieht man eigentlich ziemlich direkt.</p>
</blockquote>
<p>Naja, das ist wohl mehr oder weniger Übungssache. Mit Zeitkomplexität und Algorithmen kenne ich mich sowieso nicht wahnsinnig gut aus...</p>
<p>Aber ich dachte, die Komplexitätsklasse gebe an, in welchem Mass die Laufzeit wächst, wenn mehr Elemente dazukommen. Und das ist meiner Ansicht nach in diesem Falle mehr als quadratisch, deshalb kann ich es nicht ganz nachvollziehen...</p>
</blockquote>
<p>Ne, die ist schon quadratisch. Das kannst Du auch leicht selbst ausprobieren, mit dem Algo, den drakon hier gepostet hat. Einfach die Iterationen mitzählen und mal mit der Arraylänge spielen. Sofern da kein Bock drin ist, sollten die Iterationen näherungsweise quadratisch zur Arraylänge wachsen.<br />
Man geht ja für die O-Notation nicht vom Worstcase aus. Sonst hätte Quicksort auch nicht O(n log(n)) sondern ebenfalls O(n<sup>2</sup>).<br />
Ich muss aber gestehen, dass ich das Thema auch immer ziemlich ätzend fand. Inzwischen gehts aber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610732</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 05 Nov 2008 16:36:04 GMT</pubDate></item><item><title><![CDATA[Reply to 4 verschiedenen (Zufalls-)Zahlen on Wed, 05 Nov 2008 20:43:20 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Ne, die ist schon quadratisch. Das kannst Du auch leicht selbst ausprobieren, mit dem Algo, den drakon hier gepostet hat. Einfach die Iterationen mitzählen und mal mit der Arraylänge spielen. Sofern da kein Bock drin ist, sollten die Iterationen näherungsweise quadratisch zur Arraylänge wachsen.</p>
</blockquote>
<p>So, das hat mich nun belastet. Also hab ich mal eine Regression durchgeführt (zwar nur 15 Werte), und das kommt ziemlich gut hin (R<sup>2</sup> = 0.98). Scheint also wirklich quadratisch zu wachsen... <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>Hm, also quadratisch, weil erstens n Mal das Array durchgegangen werden muss und zweitens bei jedem Index vom Anfang an wieder iteriert wird. In diesem Falle wirken sich die zusätzlichen Neuanfänge durch bereits vorhandene Zahlen nicht auf die Komplexitätsklasse auf, nur auf die Dauer des Algorithmus, sehe ich das richtig? Aber dann müssten die Neuanfänge ja von konstanter Dauer sein. Es stimmt schon, wie du sagst, Tachyon, aber wie kann man das erklären? Ich seh da gerade nicht durch...</p>
<p>Tut mir leid, wenn ich über etwas völlig Belangloses diskutiere... (und ja, ich hatte gerade zuviel Zeit :)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610860</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 05 Nov 2008 20:43:20 GMT</pubDate></item></channel></rss>