<?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[Ungewollte Größen bei Ausgabe von Zufallszahlen]]></title><description><![CDATA[<p>Guten Tag liebe Community,</p>
<p>ich arbeite seit drei Tagen an dem bekannten Lottobeispiel. Habe mir deswegen auch in etwa. 20 Threads durchgelesen, bis mir endlich der Gedankenblitz kam, und ich den Abgleich, damit keine Zahl doppelt vorkommt, verstanden habe. (Ehrlich gesagt schäme ich mich sogar einwenig, dass ich so lange für derartiges banales gebraucht habe^^</p>
<p>Nun zu meinem Problem: Ich regeniere 6 Zufallszahlen. Diesen Habe ich eine Ranbedienung zugestellt, dass sie im Bereich von 1-50 liegen sollen. Nun, das funktioniert auch zum Teil, nur werden gigantische Zahlen Ausgegeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> Ich denke es hat was mim Stack zutun, hatte das Problem mal früher mit Strings auch gehabt. Nur habe ich für diesen Fall jetzt keine Lösung.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt; 
#include &lt;time.h&gt; 

using namespace std;

int main () {
	int i=5;	
	int Arraywerte [i];
	srand (time(0)); 
	bool x=true;	
	for (i=0;i&lt;7;i++) {
		while (x==true) {
			Arraywerte [i]=(rand()%10)+1;
			x=false;
			for (int j=0;j&lt;i;j++) {
				if (Arraywerte [j]=Arraywerte [i]) {
					x=true;
				}
			}
		}
		cout&lt;&lt;&quot;Die Zuffalszahl Nummer &quot;&lt;&lt;i&lt;&lt;&quot; ist: &quot;&lt;&lt;Arraywerte[i]&lt;&lt;'\n';
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/291911/ungewollte-größen-bei-ausgabe-von-zufallszahlen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 08:28:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291911.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Aug 2011 20:19:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Mon, 29 Aug 2011 20:20:27 GMT]]></title><description><![CDATA[<p>Guten Tag liebe Community,</p>
<p>ich arbeite seit drei Tagen an dem bekannten Lottobeispiel. Habe mir deswegen auch in etwa. 20 Threads durchgelesen, bis mir endlich der Gedankenblitz kam, und ich den Abgleich, damit keine Zahl doppelt vorkommt, verstanden habe. (Ehrlich gesagt schäme ich mich sogar einwenig, dass ich so lange für derartiges banales gebraucht habe^^</p>
<p>Nun zu meinem Problem: Ich regeniere 6 Zufallszahlen. Diesen Habe ich eine Ranbedienung zugestellt, dass sie im Bereich von 1-50 liegen sollen. Nun, das funktioniert auch zum Teil, nur werden gigantische Zahlen Ausgegeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> Ich denke es hat was mim Stack zutun, hatte das Problem mal früher mit Strings auch gehabt. Nur habe ich für diesen Fall jetzt keine Lösung.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt; 
#include &lt;time.h&gt; 

using namespace std;

int main () {
	int i=5;	
	int Arraywerte [i];
	srand (time(0)); 
	bool x=true;	
	for (i=0;i&lt;7;i++) {
		while (x==true) {
			Arraywerte [i]=(rand()%10)+1;
			x=false;
			for (int j=0;j&lt;i;j++) {
				if (Arraywerte [j]=Arraywerte [i]) {
					x=true;
				}
			}
		}
		cout&lt;&lt;&quot;Die Zuffalszahl Nummer &quot;&lt;&lt;i&lt;&lt;&quot; ist: &quot;&lt;&lt;Arraywerte[i]&lt;&lt;'\n';
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2112206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112206</guid><dc:creator><![CDATA[Arijum]]></dc:creator><pubDate>Mon, 29 Aug 2011 20:20:27 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Mon, 29 Aug 2011 20:32:50 GMT]]></title><description><![CDATA[<p>Erstens ist in Zeile 19 kein Vergleich, sondern eine Zuweisung (Vergleich wäre ==).<br />
Zweitens ziehst du dort nur Zahlen bis 10, nicht bis 50.<br />
Und drittens sind VLA's (deine Definition von Arraywerte basiert auf dem Inhalt einer Variablen) in C++ nicht erlaubt (ganz davon abgesehen, daß das Arra zu klein ist für deine Lottozahlen und du dann vermutlich eine deiner Zählvariablen kaputtmachst).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112214</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 29 Aug 2011 20:32:50 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Mon, 29 Aug 2011 20:38:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int i=5;   
int Arraywerte [i];
</code></pre>
<p>funktioniert. <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 />
Zu klein ist das Array, wie CStoll schon sagt, natürlich trotzdem.</p>
<p>Hab deinen code mal bei mir durchlaufen lassen. Hatte so eine Ausgabe:</p>
<pre><code>Die Zuffalszahl Nummer 0 ist: 3
Die Zuffalszahl Nummer 1 ist: 10553624
Die Zuffalszahl Nummer 2 ist: -1077699896
Die Zuffalszahl Nummer 3 ist: 134514994
Die Zuffalszahl Nummer 4 ist: 1
Die Zuffalszahl Nummer 5 ist: 65535
Die Zuffalszahl Nummer 6 ist: 5685236
</code></pre>
<p>Willst du das verhindern von doppelt vorkommenden Zahlen absichtlich selbst machen, oder kann das auch ein STL-Container für dich erledigen?<br />
Wenn ja, würde sich sowas anbieten:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;set&gt;
int Zufallszahl()
{
	return rand() % 49 + 1;
}
int main()
{
	using namespace std;
	srand( time( 0 ) );
	set&lt;int&gt; lottozahlen;
	while ( lottozahlen.size() &lt; 6 )
		lottozahlen.insert( Zufallszahl() );
	for ( set&lt;int&gt;::iterator it( lottozahlen.begin() ); it != lottozahlen.end(); ++it )
		cout &lt;&lt; &quot;Die Zuffalszahl Nummer &quot; &lt;&lt; 1 + std::distance( lottozahlen.begin(), it ) &lt;&lt; &quot; ist: &quot; &lt;&lt; *it &lt;&lt; '\n';
	return 0;
}
</code></pre>
<p>Achso, und der übliche Spruch darf natürlich nicht fehlen: Versuchs mal mit nem std::vector anstatt dem Array. <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/2112217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112217</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Mon, 29 Aug 2011 20:38:10 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Mon, 29 Aug 2011 20:53:20 GMT]]></title><description><![CDATA[<p>Um noch zu deinem eigentlichen Problem was zu sagen:</p>
<p>Du musst x vor Beginn der while-Schleife wieder auf true setzen, sonst wird die nämlich direkt übersprungen. D.h. die Array Elemente nach Index 0 werden nie zugewiesen. Die Werte die du also ausgegeben bekommst, sind die Werte, die noch von einem anderen auf dem Stack stehen, weil dein Array bei &quot;Erzeugung&quot; nicht mit bspw. 0 initialisiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112222</guid><dc:creator><![CDATA[wurzelkind]]></dc:creator><pubDate>Mon, 29 Aug 2011 20:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Mon, 29 Aug 2011 21:14:55 GMT]]></title><description><![CDATA[<p>Vielen Dank erstmal für eure Antworten <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>
<p>Es ging mir bei dieser Übung hauptsächlich um Arrays, Bubblesort wird folgen, ich denke aber ich nehme einen anderne Algorithmus, hauptsache ich verstehe das ganze^^</p>
<p>Wusste ja garnicht, dass Arrays in dieser Form nicht erlaubt seien Oo. Wenn man doch mit Strings arbeitet, und man den Buffer beliebig erweitern will, so kommt man doch nicht drumrum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Vielen Dank, waren alles Denkfehler, aber doch Fehler und diesen sollte man immer vorbeugen. Natürlich sollte dort 50 statt 10 stehen und == statt = verwendet werden. thx <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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12051">@Dobi</a>: Wie du siehst arbeite ich mich schritt nach schritt ein. Das besondere am Programmieren ist eben dieses verstrckte, die vielen Algorythmen usw.^^ Eine einfache GUI ist doch langweilig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /> Nuja arbeite im mom. hauptsächlich mit std. Evtl. probiere ich in Zukunft auch die stl Bibliotheken <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>
<p>@wurzelkind: könntest du mir es mir bitte nochmals mit anderen Worten erklären? Habe mir schon gedacht, dass es mit dem Stack zutun hat.. Wieso muss ein Array bei der Initialisierung mit 0 abgeglichen werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112229</guid><dc:creator><![CDATA[Arijum]]></dc:creator><pubDate>Mon, 29 Aug 2011 21:14:55 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Mon, 29 Aug 2011 21:31:17 GMT]]></title><description><![CDATA[<p>Worauf wurzelkind hinauswollte: Beim ersten Durchlauf der for()-Schleife ist x noch auf true, wird aber in der while-Schleife auf false gesetzt (in der inneren for-Schleife passiert dort nichts weiter). Beim zweiten Durchlauf der for-Schleife (und jedem weiteren) steht x auf false, d.h. die while-Schleife wird gar nicht erst betreten.<br />
Dadurch ziehst du nur eine Zufallszahl und im übrigen Array bleibt der Müll drin stehen, der beim Anlegen des Arrays dort stand. Wenn du das Array mit <code>int Arraywerte[7]={};</code> gleich initialisiert hättest, wären am Ende ein Haufen Nullen angezeigt worden.</p>
<p>PS: Fast vergessen, die Lösung für dieses Problem: setz ein <code>x=false;</code> vor die while-Schleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112235</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 29 Aug 2011 21:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 01:33:43 GMT]]></title><description><![CDATA[<p>So vielen Dank nochmals an alle. Ja, der Fehler war jener, dass Arrays, sollten sie nicht gefüllt werden, mit Zufallswerten gefüllt werden. Und natürlich der Fehler mit dem einmal auf x=false gesetzten Befehl.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Hast da was verwechselt^^ In meinem Fall müsste ein x=true jeweils vor der while und der for Funktion eingefügt werden. Thx nochmal <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>
<p>Hier nun der fertige funktionierende Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt; 
#include &lt;time.h&gt; 

using namespace std;

int main () {
	int i=5;	
	int Arraywerte [i];
	srand (time(0)); 	
	for (i=0;i&lt;7;i++) {
		bool x=true;
		while (x==true) {
			Arraywerte [i]=(rand()%50)+1;
			x=false;
			for (int j=0;j&lt;i;j++) {
				if (Arraywerte [j]==Arraywerte [i]) {
					x=true;
				}

			}
		}
		cout&lt;&lt;&quot;Die Zuffalszahl Nummer &quot;&lt;&lt;i&lt;&lt;&quot; ist: &quot;&lt;&lt;Arraywerte[i]&lt;&lt;'\n';
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2112277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112277</guid><dc:creator><![CDATA[Arijum]]></dc:creator><pubDate>Tue, 30 Aug 2011 01:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 05:17:09 GMT]]></title><description><![CDATA[<p>Dobi schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int i=5;   
int Arraywerte [i];
</code></pre>
<p>funktioniert. <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>Ist aber trotzdem kein C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112288</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 30 Aug 2011 05:17:09 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 07:10:38 GMT]]></title><description><![CDATA[<p>Arijum schrieb:</p>
<blockquote>
<p>Hier nun der fertige funktionierende Code:</p>
</blockquote>
<p>Und das Array für deine Zahlen ist immer noch zu klein - du reservierst Platz für 5 Werte, quetschst danach aber 7 Werte hinein.<br />
(und ich habe keine Ahnung, was regulär in dem Speicher steht, den die beiden überschüssigen Elemente überschreiben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112307</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 30 Aug 2011 07:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 08:11:06 GMT]]></title><description><![CDATA[<p>Im Übrigen wählst du von allen Möglichkeiten, doppelte Zahlen auszuschließen, die mit Abstand ineffizienteste. Ich skizziere mal eine effiziente Variante:<br />
1. Lege einen Conatiner mit den Elementen 1 bis 49 an.<br />
2. Wähle zufällig eine Zahl aus diesem Container im Bereich 1-49. Vertausche (swap) diese Zahl mit der letzten im Container. (Beispiel: 3 wurde gewählt -&gt; der Container enthält nun 1, 2, 49, 4, ..., 48, 3). Die 3 ist deine erste Lottozahl.<br />
3. Wähle zufällig eine Zahl aus dem Container im Bereich 1-48 und vertausche sie mit der vorletzten Zahl. Das ist deine zweite Lottozahl.<br />
4. Wähle zufällig eine Zahl aus dem Container im Bereich 1-47 und vertausche sie mit der vorvorletzten Zahl. Das ist deine dritte Lottozahl.<br />
5. Fahre nach dem Muster fort, bis du 7 Zahlen hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112322</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Tue, 30 Aug 2011 08:11:06 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 11:32:52 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Im Übrigen wählst du von allen Möglichkeiten, doppelte Zahlen auszuschließen, die <strong>mit Abstand ineffizienteste</strong>.</p>
</blockquote>
<p>Ich gehe davon aus, daß das kleine break noch seinen Weg in die Suchschleife findet.<br />
Die erste Zahl trifft immer.<br />
Die zweite mit Wahrscheinlichkeit 48/49.<br />
Die dritte mit Wahrscheinlichkeit 47/49.<br />
usw.<br />
Also braucht man durchschnittlich 1+49/48+49/47+49/46+49/45+49/44 mal raten.<br />
Also 6.33 mal. Ach, soo viel schlimmer als Dein Weg, der erstmal 49 Zahlen füllen muß, wird es schon nicht sein.<br />
Man braucht 6.33 mal statt 6 mal rand().<br />
Und man braucht 21.77 Arrayzugriffe statt 61.</p>
<p>Manchmal macht es mich traurig, daß hier so oft die Anfänger verrissen werden, und zwar immer von Neulingen mit nur zwei bis drei Jahren Erfahrung mit schwacher Faktenlage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112431</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 30 Aug 2011 11:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 12:15:57 GMT]]></title><description><![CDATA[<p>Es lang mir fern, irgendetwas zu verreissen, vielmehr wollte ich Möglichkeiten aufzeigen, wie man es besser machen kann. Und wenn man von O(n²) auf O(n) kommt und einen Algorithmus mit deterministischer Laufzeit hat anstelle eines, der potentiell nie terminiert, ist das m.E. eine deutliche Verbesserung, auch wenn bei 7 aus 49 der Unterschied selten spürbar sein wird.</p>
<p>Und darüber hinaus mag ich zwar erst seit 4 Jahren hier angemeldet sein, mit C++ habe ich aber schon länger zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112467</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Tue, 30 Aug 2011 12:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 12:32:14 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Es lang mir fern, irgendetwas zu verreissen,</p>
</blockquote>
<p>Er hat Mühe, die native Lösung zu schaffen, da braucht er sicher kein<br />
<em>Im Übrigen wählst du von allen Möglichkeiten, doppelte Zahlen auszuschließen, die mit Abstand ineffizienteste.</em></p>
<blockquote>
<p>vielmehr wollte ich Möglichkeiten aufzeigen, wie man es besser machen kann.</p>
</blockquote>
<p>Haste wohl nicht geschafft, wie ich nachgewiesen habe.</p>
<blockquote>
<p>Und wenn man von O(n²) auf O(n) kommt</p>
</blockquote>
<p>Wenn Dein O(n) lahmer ist als sein O(n²), dann ist das akademischer Unfug.</p>
<blockquote>
<p>und einen Algorithmus mit deterministischer Laufzeit hat anstelle eines, der potentiell nie terminiert,</p>
</blockquote>
<p>Auch ein wenig weltfremd.</p>
<blockquote>
<p>ist das m.E. eine deutliche Verbesserung, auch wenn bei 7 aus 49 der Unterschied selten spürbar sein wird.</p>
</blockquote>
<p>Egal, welche nun schneller ist, seine ist sicher nicht die von allen Lösungen ineffizienteste.</p>
<blockquote>
<p>Wie kommst du eigentlich auf die Rechnung zum Erwartungswert? Sie würde auch noch ein endliches Ergebnis für 50 aus 49 ergeben, wo Unendlich herauskommen müsste.</p>
</blockquote>
<p>Geraten und nachgemessen. Übereinstimmung.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main (int argc, const char * argv[])
{
    double randCount=0,arrayCount=0,runCount=0;
	for(;;) {
		int zahlen[6];
		for(int i=0; i&lt;6; ++i) {
nochmal:
			int n=rand()%49+1;
			++randCount;
			for(int j=0; j&lt;i; ++j){
                ++arrayCount;
				if(zahlen[j]==n) {
					goto nochmal;
				}
			}
            ++arrayCount;
			zahlen[i]=n;
		}
		++runCount;
		cout&lt;&lt;randCount/runCount&lt;&lt;'\t'&lt;&lt;arrayCount/runCount&lt;&lt;'\n';
	}
}
</code></pre>
<blockquote>
<p>Und darüber hinaus mag ich zwar erst seit 4 Jahren hier angemeldet sein, mit C++ habe ich aber schon länger zu tun.</p>
</blockquote>
<p>Für Dich speziell hätte ich die Jahre wohl höher legen sollen. Aber allgemein scheint so bei 2 bis 3 Erfahrungsjahren das Maximum des von mir angesprochenen Problems zu liegen.</p>
<p>Die Mecker geht auch kaum an Dich. Du warst nur gerade da, um ein Problem anzusprechen, das mich seit Jahren juckt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112477</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 30 Aug 2011 12:32:14 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 12:30:30 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie kommst du eigentlich auf die Rechnung zum Erwartungswert? Sie würde auch noch ein endliches Ergebnis für 50 aus 49 ergeben, wo Unendlich herauskommen müsste.</p>
</blockquote>
<p>Mal schauen...<br />
49/49 + 49/48 + 49/47 + 49/ 46 + ... + 49/3 + 49/2 + 49/1 + 49/0<br />
Naja, Unendlich würde ich nicht sagen, sondern Undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112480</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 30 Aug 2011 12:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 12:42:01 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Es lang mir fern, irgendetwas zu verreissen, vielmehr wollte ich Möglichkeiten aufzeigen, wie man es besser machen kann. Und wenn man von O(n²) auf O(n) kommt und einen Algorithmus mit deterministischer Laufzeit hat anstelle eines, der potentiell nie terminiert, ist das m.E. eine deutliche Verbesserung, auch wenn bei 7 aus 49 der Unterschied selten spürbar sein wird....</p>
</blockquote>
<p>Ich denke man kann aufgrund der Implementierung von rand() zeigen, dass der Algorithmus auf jeden Fall terminiert. Und da &quot;der Algorithmus&quot; hier keine variable Eingabe hat würde mich mal interessieren was hier dein n sein soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112488</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Tue, 30 Aug 2011 12:42:01 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 12:55:50 GMT]]></title><description><![CDATA[<p>Mitleid schrieb:</p>
<blockquote>
<p>Ich denke man kann aufgrund der Implementierung von rand() zeigen, dass der Algorithmus auf jeden Fall terminiert.</p>
</blockquote>
<p>Und die wäre?</p>
<blockquote>
<p>Und da &quot;der Algorithmus&quot; hier keine variable Eingabe hat würde mich mal interessieren was hier dein n sein soll?</p>
</blockquote>
<p>Ahh, da ist mit ipsec ein bisschen der innere Programmierer durchgebrannt, der ein Problem immer so abstrakt wie möglich behandelt. Du weißt sicherlich selbst, was er mit n meint. Und sein Algorithmus ist sicher auch für sehr viele Fälle von X Zahlen aus Y der beste. Nur bei dem X/Y Verhältnis des konkreten Problems 6 aus 49 ist er schlechter als der naive Algorithmus (der für allgemeine X und Y tatsächlich sehr ineffizient werden kann).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112498</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Aug 2011 12:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 13:20:37 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Mitleid schrieb:</p>
<blockquote>
<p>Ich denke man kann aufgrund der Implementierung von rand() zeigen, dass der Algorithmus auf jeden Fall terminiert.</p>
</blockquote>
<p>Und die wäre?</p>
</blockquote>
<p>Die Annahme, dass rand() sich standardkonform verhält reicht.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>...Du weißt sicherlich selbst, was er mit n meint. ...</p>
</blockquote>
<p>Nö. Erklärs mir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112508</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Tue, 30 Aug 2011 13:20:37 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 13:45:02 GMT]]></title><description><![CDATA[<p>Ich hab die vorgeschlagenen Lösungen und meinen eigenen Ansatz (von dem ich mir mehr erhofft hatte <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="😞"
    /> ) mal gegeneinander gebencht; nach jeder Ziehung wird die Summe zusammengerechnet, um 1. den Optimizer zu überlisten und 2. die Benutzung der gezogenen Zahlen zu simulieren, die ja nachträglich zu erwarten ist. std::set verliert hier natürlich etwas; wenn euch die Benutzung der gezogenen Zahlen nicht interessiert, sind die Ergebnisse für den std::set-Ansatz dementsprechend wertlos. Code:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;numeric&gt;
#include &lt;set&gt;

#include &lt;cstdlib&gt;
#include &lt;ctime&gt;

int const TURNS = 10000000;

int main() {
  std::clock_t bench[5];
  long sum = 0;

  std::srand(std::time(0));

  bench[0] = std::clock();

  for(int i = 0; i &lt; TURNS; ++i) {
    std::set&lt;int&gt; s;

    do {
      s.insert(std::rand() % 49 + 1);
    } while(s.size() &lt; 6);

    sum += std::accumulate(s.begin(), s.end(), 0);
  }

  bench[1] = std::clock();

  for(int i = 0; i &lt; TURNS; ++i) {
    int numbers[] = {  1,  2,  3,  4,  5,  6,  7,  8,  9, 10,
                      11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
                      21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
                      31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
                      41, 42, 43, 44, 45, 46, 47, 48, 49, 50 };

    for(int j = 0; j &lt; 6; ++j) {
      std::swap(numbers[j], numbers[std::rand() % (49 - j) + j]);
    }

    sum += std::accumulate(numbers, numbers + 6, 0);
  }

  bench[2] = std::clock();

  for(int i = 0; i &lt; TURNS; ++i) {
    int werte[6];
    for(int j = 0; j &lt; 6; ++j) {
      bool keep_going = true;

      while(keep_going) {
        werte[j] = std::rand() % 49 + 1;
        keep_going = false;

        for(int k = 0; k &lt; j; ++k) {
          if(werte[k] == werte[j]) {
            keep_going = true;
            break;
          }
        }
      }
    }

    sum += std::accumulate(werte, werte + 6, 0);
  }

  bench[3] = std::clock();

  for(int i = 0; i &lt; TURNS; ++i) {
    bool already_used[50] = {};
    int werte[6];

    for(int j = 0; j &lt; 6; ++j) {
      int x;

      do {
        x = std::rand() % 49 + 1;
      } while(already_used[x]);

      werte[j] = x;
      already_used[x] = true;
    }

    sum += std::accumulate(werte, werte + 6, 0);
  }

  bench[4] = std::clock();

  std::cout &lt;&lt; sum &lt;&lt; '\n'
            &lt;&lt; &quot;std::set:  &quot; &lt;&lt; double(bench[1] - bench[0]) / CLOCKS_PER_SEC &lt;&lt; '\n'
            &lt;&lt; &quot;ipsec:     &quot; &lt;&lt; double(bench[2] - bench[1]) / CLOCKS_PER_SEC &lt;&lt; '\n'
            &lt;&lt; &quot;TE:        &quot; &lt;&lt; double(bench[3] - bench[2]) / CLOCKS_PER_SEC &lt;&lt; '\n'
            &lt;&lt; &quot;bool-Feld: &quot; &lt;&lt; double(bench[4] - bench[3]) / CLOCKS_PER_SEC &lt;&lt; '\n';
}
</code></pre>
<p>Ergebnis mit gcc 4.6.1 und -O3:</p>
<pre><code>6000173451
std::set:  7.08
ipsec:     0.96
TE:        1.13
bool-Feld: 1.11
</code></pre>
<p>Bei niedrigeren Optimierungsstufen ist das Ergebnis weniger günstig für ipsec. Ich vermute, dass der gcc hier die komplette Schleife ausklappt, weil die Zahl der Durchläufe zur Compilezeit bekannt ist - im Gegensatz zu den anderen Ansätzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112517</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 30 Aug 2011 13:45:02 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 13:53:52 GMT]]></title><description><![CDATA[<p>Mitleid schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Mitleid schrieb:</p>
<blockquote>
<p>Ich denke man kann aufgrund der Implementierung von rand() zeigen, dass der Algorithmus auf jeden Fall terminiert.</p>
</blockquote>
<p>Und die wäre?</p>
</blockquote>
<p>Die Annahme, dass rand() sich standardkonform verhält reicht.</p>
</blockquote>
<p>Ganz sicher nicht. Laut Standard liefert rand() einfach nur Pseudozufallszahlen zwischen 0 und RAND_MAX. Streng genommen ist noch nicht einmal die Verteilung vorgegeben, aber selbst wenn man von Gleichverteilung ausgeht reicht das nicht. Eher im Gegenteil. Damit der Algorithmus terminiert, müsste garantiert sein, dass in endlicher Zeit mehr als 5 verschiedene Zahlen gezogen werden. Das wäre der Qualität der Zufallszahlen abträglich.</p>
<p>seldon schrieb:</p>
<blockquote>
<p>Bei niedrigeren Optimierungsstufen ist das Ergebnis weniger günstig für ipsec. Ich vermute, dass der gcc hier die komplette Schleife ausklappt, weil die Zahl der Durchläufe zur Compilezeit bekannt ist - im Gegensatz zu den anderen Ansätzen.</p>
</blockquote>
<p>Das ist ja auch sein volles Recht, das so zu machen. Letztendlich interessiert doch nur die volloptimierte Variante. Danke für den Test. Das bool-Feld und ipsec würde ich nach mehreren Durchläufen bei mir, die deine Ergebnisse auch mit anderen Compilern bestätigen, als gleich ansehen. Beide dicht gefolgt vom TE.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112519</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Aug 2011 13:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 14:09:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int werte[6];
		for(int j = 0; j &lt; 6; ++j) {
nochmal:
			int z = std::rand() % 49 + 1;
			for(int k = 0; k &lt; j; ++k)
				if(werte[k] == z) {
					goto nochmal;
				}
			werte[j]=z;
		}
</code></pre>
<pre><code>std::set:  3.94
ipsec:     0.83
TE:        0.73
bool-Feld: 0.75
goto:      0.7
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2112526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112526</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 30 Aug 2011 14:09:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 14:03:39 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Mitleid schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Mitleid schrieb:</p>
<blockquote>
<p>Ich denke man kann aufgrund der Implementierung von rand() zeigen, dass der Algorithmus auf jeden Fall terminiert.</p>
</blockquote>
<p>Und die wäre?</p>
</blockquote>
<p>Die Annahme, dass rand() sich standardkonform verhält reicht.</p>
</blockquote>
<p>Ganz sicher nicht. Laut Standard liefert rand() einfach nur Pseudozufallszahlen zwischen 0 und RAND_MAX. Streng genommen ist noch nicht einmal die Verteilung vorgegeben, aber selbst wenn man von Gleichverteilung ausgeht reicht das nicht. Eher im Gegenteil. Damit der Algorithmus terminiert, müsste garantiert sein, dass in endlicher Zeit mehr als 5 verschiedene Zahlen gezogen werden. Das wäre der Qualität der Zufallszahlen abträglich.</p>
</blockquote>
<p>Der Standard garantiert dir, dass für einen bestimmten, mit srand() angenommenen Startwert die Folge der mit rand() erzeugten Pseudozufallszahlen identisch ist. Somit wird das ein endliches Problem, welches sich für jeden Fall wunderbar durchprobieren lässt. Der Beweis der Terminierung kann also stets locker erbracht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112528</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Tue, 30 Aug 2011 14:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 14:22:08 GMT]]></title><description><![CDATA[<p>Das ist doch Unsinn! Das hat mit der Standardkonformität der Implementierung überhaupt gar nichts zu tun! Du probierst für jede Implementierung einfach nur aus, ob der Algorithmus terminiert. Aber weder garantiert dir der Standard an sich, dass der Algorithmus durch die vorgegebenen Eigenschaften von rand() immer terminiert, noch kennst du die Implementierung und musst für jede davon den Algorithmus erneut testen. Super Beweis! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Und schönerweise hast du damit sogar schon gezeigt, wie der Gegenbeweis läuft: Ich muss nur einen einzigen Startwert finden, der in einer Endlosschleife endet. Es gibt sehr viele Startwerte und sehr viele Implementierungen von rand(). Willst du wirklich da drauf wetten, dass die wirklich alle für alle Startwerte terminieren? Zur Not kann ich mir sogar mein eigenes, standardkonformes rand() schreiben, welches mit Absicht eine Implementierungsschwäche enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112540</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Aug 2011 14:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 14:32:38 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Es gibt sehr viele Startwerte und sehr viele Implementierungen von rand(). Willst du wirklich da drauf wetten, dass die wirklich alle für alle Startwerte terminieren?</p>
</blockquote>
<p>Ich würde darauf wetten. Das heißt, ich würde den Algo des Threaderstellers ohne Schmerzen in Produktivcode verwenden.</p>
<blockquote>
<p>Zur Not kann ich mir sogar mein eigenes, standardkonformes rand() schreiben, welches mit Absicht eine Implementierungsschwäche enthält.</p>
</blockquote>
<p>Ja, deswegen kann der Standard hier nichts garantieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112550</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 30 Aug 2011 14:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 15:20:56 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Es gibt sehr viele Startwerte und sehr viele Implementierungen von rand(). Willst du wirklich da drauf wetten, dass die wirklich alle für alle Startwerte terminieren?</p>
</blockquote>
<p>Ich würde darauf wetten. Das heißt, ich würde den Algo des Threaderstellers ohne Schmerzen in Produktivcode verwenden.</p>
</blockquote>
<p>Ok, bei 6 aus 49 stehen die Chancen noch recht gut <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="🙂"
    /> . Aber wie wäre es mit 32000 aus 32767?</p>
<p>edit: Beziehungsweise da würdest du sicherlich ipsecs Algorithmus nehmen, wegen der Laufzeit.</p>
<p>Ach, immer diese pragmatischen Lösungen. Da kann man nie mal richtig schön theoretisieren. <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/2112581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112581</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Aug 2011 15:20:56 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 17:22:44 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Aber wie wäre es mit 32000 aus 32767?</p>
</blockquote>
<p>Also ich würd in dem Fall lieber die 767 Zahlen, die nicht vorkommen, ziehen. <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/2112619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112619</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 30 Aug 2011 17:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Größen bei Ausgabe von Zufallszahlen on Tue, 30 Aug 2011 17:38:42 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Das ist doch Unsinn! Das hat mit der Standardkonformität der Implementierung überhaupt gar nichts zu tun! Du probierst für jede Implementierung einfach nur aus, ob der Algorithmus terminiert. Aber weder garantiert dir der Standard an sich, dass der Algorithmus durch die vorgegebenen Eigenschaften von rand() immer terminiert, noch kennst du die Implementierung und musst für jede davon den Algorithmus erneut testen. Super Beweis! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Hm, ich weiß nicht, was es da zu lamentieren gibt. Der Standard GARANTIERT, dass da niemals ein echter Zufalls ins Spiel kommen kann. Mehr braucht man nicht.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>...Zur Not kann ich mir sogar mein eigenes, standardkonformes rand() schreiben, welches mit Absicht eine Implementierungsschwäche enthält.</p>
</blockquote>
<p>Da dein &quot;geschwächtes&quot; rand() die Werte ebenfalls reproduzierbar berechnen MUSS um standardkonform zu sein, hast du an der Stelle aber nichts gewonnen.</p>
<p>Man muss auch nicht wetten. Wenn UINT_MAX eine akzeptable Größe hat lässt man das durchprobieren und hat den wasserdichten Beweis, dass das Programm hält. Wenn nicht sieht man sich halt rand() genauer an und fährt einen formalen Beweis. Wo ist das Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112625</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Tue, 30 Aug 2011 17:38:42 GMT</pubDate></item></channel></rss>