<?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[Problem mit Zufallszahlenfolge]]></title><description><![CDATA[<p>Sehr verehrte Damen und Herren,</p>
<p>ich habe mir einen Lottogenerator programmiert. Es ist aber so, dass nicht immer<br />
unterschiedliche Zahlenfolge generiert werden, Beispiel: 36 7 7 30 2 17.</p>
<p>Hierbei tauchen zwei mal die Sieben auf und wäre somit unrealistisch.</p>
<p>Frage an euch: Wie biege ich die rand() Funktion so hin, dass immer unterschiedliche Zahlen generiert werden?</p>
<p>Mein Quellcode in gekürzter Form sieht so aus:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;ctime&gt;
using namespace std;

int main()
{

  srand((unsigned) time(NULL));
  cout &lt;&lt; endl &lt;&lt; endl;
  cout &lt;&lt; &quot;Generiere 6 aus 49: &quot; &lt;&lt; endl &lt;&lt; endl;

for (int ziehung = 1; ziehung &lt;= 6; ziehung++)
 {
    int lottozahlen = (rand() %49) + 1;		
    cout &lt;&lt; lottozahlen &lt;&lt; &quot; &quot;;
 }
 cout &lt;&lt; endl;
 char pause;
 cin &gt;&gt; pause;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/324177/problem-mit-zufallszahlenfolge</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 08:21:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324177.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Mar 2014 21:24:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Wed, 05 Mar 2014 21:24:34 GMT]]></title><description><![CDATA[<p>Sehr verehrte Damen und Herren,</p>
<p>ich habe mir einen Lottogenerator programmiert. Es ist aber so, dass nicht immer<br />
unterschiedliche Zahlenfolge generiert werden, Beispiel: 36 7 7 30 2 17.</p>
<p>Hierbei tauchen zwei mal die Sieben auf und wäre somit unrealistisch.</p>
<p>Frage an euch: Wie biege ich die rand() Funktion so hin, dass immer unterschiedliche Zahlen generiert werden?</p>
<p>Mein Quellcode in gekürzter Form sieht so aus:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;ctime&gt;
using namespace std;

int main()
{

  srand((unsigned) time(NULL));
  cout &lt;&lt; endl &lt;&lt; endl;
  cout &lt;&lt; &quot;Generiere 6 aus 49: &quot; &lt;&lt; endl &lt;&lt; endl;

for (int ziehung = 1; ziehung &lt;= 6; ziehung++)
 {
    int lottozahlen = (rand() %49) + 1;		
    cout &lt;&lt; lottozahlen &lt;&lt; &quot; &quot;;
 }
 cout &lt;&lt; endl;
 char pause;
 cin &gt;&gt; pause;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2386964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386964</guid><dc:creator><![CDATA[Sandor++]]></dc:creator><pubDate>Wed, 05 Mar 2014 21:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Wed, 05 Mar 2014 21:31:42 GMT]]></title><description><![CDATA[<p>Sandor++ schrieb:</p>
<blockquote>
<p>Frage an euch: Wie biege ich die rand() Funktion so hin, dass immer unterschiedliche Zahlen generiert werden?</p>
</blockquote>
<p>Falscher Ansatz. Die rand()-Funktion macht schon genau das, was sie soll, nämlich Zufallszahlen generieren. Dazu gehört eben auch eine gewisse Wahrscheinlichkeit, mehrmals die gleiche Zahl zu erzeugen.<br />
Besserer: Du denkst dir etwas aus, damit trotzdem Zahlen nach deinen Anforderungen heraus kommen. Zwei ganz allgemeine Ansätze dazu sind, dass man bei der Ziehung so clever vorgeht, dass der Fall gar nicht erst auftreten kann; oder dass man den Fall irgendwie abfangt und entsprechend reagiert.</p>
<p>Denk mal über das Problem nach, gerade der zweite Ansatz ist eigentlich nicht sehr schwer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386965</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 05 Mar 2014 21:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Wed, 05 Mar 2014 21:37:11 GMT]]></title><description><![CDATA[<p>Es gibt den Trick, dass du dir ein Array/Vector/Liste mit den möglichen Zahlen erstellst (in dem Fall die 1 bis 7) und dieses Feld dann einfach mischst(shuffelst). Aber das ist nur die Idee und äquivalent zu SeppJ's erstem Vorschlag.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386966</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 05 Mar 2014 21:37:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Wed, 05 Mar 2014 21:43:04 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Es gibt den Trick, dass du dir ein Array/Vector/Liste mit den möglichen Zahlen erstellst (in dem Fall die 1 bis 7) und dieses Feld dann einfach mischst(shuffelst). Aber das ist nur die Idee und äquivalent zu SeppJ's erstem Vorschlag.</p>
</blockquote>
<p>Soweit bin ich leider noch nicht. Dann muss ich wohl noch im Buch wälzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386967</guid><dc:creator><![CDATA[Sandor++]]></dc:creator><pubDate>Wed, 05 Mar 2014 21:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Wed, 05 Mar 2014 21:46:35 GMT]]></title><description><![CDATA[<p>Ok, dann gibts noch die zweite Möglichkeit: Du suchst solange nach eienr Zufallszahl bis du eine gefunden hast, die dir passt (vereinfacht ausgedrückt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386969</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 05 Mar 2014 21:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Wed, 05 Mar 2014 21:52:10 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Ok, dann gibts noch die zweite Möglichkeit: Du suchst solange nach eienr Zufallszahl bis du eine gefunden hast, die dir passt (vereinfacht ausgedrückt).</p>
</blockquote>
<p>Ja schon aber die im Fernsehen machen das ja auch nicht so. Da werden die Bälle<br />
einmal gezogen und so muss das auch virtuell funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386970</guid><dc:creator><![CDATA[Sandor++]]></dc:creator><pubDate>Wed, 05 Mar 2014 21:52:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Wed, 05 Mar 2014 22:00:04 GMT]]></title><description><![CDATA[<p>Sandor++ schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Ok, dann gibts noch die zweite Möglichkeit: Du suchst solange nach eienr Zufallszahl bis du eine gefunden hast, die dir passt (vereinfacht ausgedrückt).</p>
</blockquote>
<p>Ja schon aber die im Fernsehen machen das ja auch nicht so. Da werden die Bälle<br />
einmal gezogen und so muss das auch virtuell funktionieren.</p>
</blockquote>
<p>Muss es? Tust ja auch nicht echtes Quantenrauschen in deinen Zufall, sondern nur so ein simulierten rand().</p>
<p>Naja, ich weiß, was Du meinst. Aber ohne Array, wo man Zahlen einträgt oder sie umhervertauscht, wird's nicht gehen. Der Lottoautomat tut ja auch im Prinzip ein Array 1 2 3 ... 49 durcheinander machen, und dann die erste Zahl vom Array anzeigen und aus dem Array wegnehmen. Dazu bräuchte man eine Merkliste von 49 Zahlen und einen Blick nach &quot;Fischer Yates Shuffle&quot;, damit's nicht schief wird. Aber das Andere Vorgehen ist auch nicht merklich schlechter oder besser, wo man einfach nochmal würfelt, wenn man die Zahl schon hatte, denn daß man nochmal würfeln muss, ist ja unwahrscheinlich genug.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386971</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 05 Mar 2014 22:00:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Wed, 05 Mar 2014 22:18:20 GMT]]></title><description><![CDATA[<p>Oder noch die dritte Methode, die auch der Originalballmethode nachempfunden ist: Ein Array mit allen Zahlen nehmen, einen zufälligen Eintrag wählen, Eintrag entfernen. Auch sehr effizient. Ganz besonders, wenn man mal verallgemeinert und nicht nur &quot;6 aus 49&quot;, sondern auch &quot;5 aus 6&quot; oder &quot;7 aus 84495840984&quot; spielen möchte. Die immer-wieder-neu-ziehen-bis-es-passt-Methode funktioniert nämlich nicht so gut im ersten Fall, die alles-mischen-und-die-ersten-X-nehmen-Methode funktioniert nicht so gut im zweiten Fall. Diese Methode funktioniert in allen Fällen ganz ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2386976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2386976</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 05 Mar 2014 22:18:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:30:47 GMT]]></title><description><![CDATA[<p>In Anlehnung an SeppJs Vorschlag (ich hoffe ich habe ihn richtig verstasnden), werfe ich mal folgendes Minimalbeispiel in den Raum:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;random&gt;
#include &lt;vector&gt;

class zufallszahlengenerator
{
	public:
		zufallszahlengenerator(unsigned int max):
			_engine( 4711 ), _rng( 1 , max )  {}

		unsigned int operator()(){ return _rng( _engine ); }

	private:
		std::mt19937 _engine;
		std::uniform_int_distribution&lt;unsigned int&gt; _rng;
};

int main()
{
	std::vector&lt;unsigned int&gt; zahlen_zum_ziehen;

	for(unsigned int i = 1; i &lt;= 49; ++i)
		zahlen_zum_ziehen.push_back( i );

	for(unsigned int i = 1; i &lt;= 6; ++i)
	{
		zufallszahlengenerator zufall( zahlen_zum_ziehen.size() );

		unsigned int zufallszahl = zufall();

		std::cout &lt;&lt; &quot;gezogene Zufallszahl: &quot; &lt;&lt; zahlen_zum_ziehen[ i ] &lt;&lt; std::endl;

		auto it = zahlen_zum_ziehen.begin() + zufallszahl - 1;

		zahlen_zum_ziehen.erase( it );
	}

	return 0;
}
</code></pre>
<p>Gruß,<br />
-- Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387021</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:30:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:36:32 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>In Anlehnung an SeppJs Vorschlag (ich hoffe ich habe ihn richtig verstasnden), werfe ich mal folgendes Minimalbeispiel in den Raum:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;random&gt;
#include &lt;vector&gt;

class zufallszahlengenerator
{
	public:
		zufallszahlengenerator(unsigned int max):
			_engine( 4711 ), _rng( 1 , max )  {}

		unsigned int operator()(){ return _rng( _engine ); }

	private:
		std::mt19937 _engine;
		std::uniform_int_distribution&lt;unsigned int&gt; _rng;
};

int main()
{
	std::vector&lt;unsigned int&gt; zahlen_zum_ziehen;

	for(unsigned int i = 1; i &lt;= 49; ++i)
		zahlen_zum_ziehen.push_back( i );

	for(unsigned int i = 1; i &lt;= 6; ++i)
	{
		zufallszahlengenerator zufall( zahlen_zum_ziehen.size() );

		unsigned int zufallszahl = zufall();

		std::cout &lt;&lt; &quot;gezogene Zufallszahl: &quot; &lt;&lt; zahlen_zum_ziehen[ i ] &lt;&lt; std::endl;
	
		auto it = zahlen_zum_ziehen.begin() + zufallszahl - 1;

		zahlen_zum_ziehen.erase( it );
	}

	return 0;
}
</code></pre>
<p>Gruß,<br />
-- Klaus.</p>
</blockquote>
<p>Ich verstehe den Code nicht.<br />
Und ich wundere mich über die immer gleiche Ausgabe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387024</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:36:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:37:51 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Und ich wundere mich über die immer gleiche Ausgabe.</p>
</blockquote>
<p>Also ich kriege</p>
<pre><code>gezogene Zufallszahl: 2
gezogene Zufallszahl: 3
gezogene Zufallszahl: 4
gezogene Zufallszahl: 8
gezogene Zufallszahl: 10
gezogene Zufallszahl: 12
</code></pre>
<p>Gruß,<br />
-- Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387025</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:42:34 GMT]]></title><description><![CDATA[<p>@ Klaus82: Ich würde die Zahl nach hinten tauschen, vor dem Löschen. Die Reihenfolge ist schließlich nicht wichtig. Mit einem erase in der Mitte geht sonst nämlich auch der Fall &quot;6 aus 43743847249&quot; schief.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387027</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:48:23 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>@ Klaus82: Ich würde die Zahl nach hinten tauschen, vor dem Löschen. Die Reihenfolge ist schließlich nicht wichtig. Mit einem erase in der Mitte geht sonst nämlich auch der Fall &quot;6 aus 43743847249&quot; schief.</p>
</blockquote>
<p>Wie meinen?</p>
<p>Ich sage dem Zufallszahlengenerator, dass er mir Zufallszahlen von 1 bis 'Länge-der-zu-ziehenden-Zahlen' geben soll.</p>
<p>Die Zufallszahl gibt den Eintrag des Arrays an.</p>
<p>Diesen Eintrag lösche ich, dass diese Zahl nicht wieder gezogen werden kann.</p>
<p>Dann geht das Spiel von vorne los, d.h. die maximale Zahl des Generators ist um eins kleiner.</p>
<p>Ich initialisiere den Generator immer wieder neu, mag vielleicht ein Problem sein.</p>
<p>Aber warum soll ich was tauschen? <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=":confused:"
      alt="😕"
    /></p>
<p>Gruß,<br />
-- Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387029</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:48:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:49:07 GMT]]></title><description><![CDATA[<p>Vorschlag für kleine Ämderungen</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;random&gt;
#include &lt;vector&gt;

int main()
{
    std::mt19937 engine;//nicht den fricken mt in einer innere Schleife für je eine Zahl 
		//konstruieren lassen. 

	std::vector&lt;unsigned int&gt; zahlen_zum_ziehen;

    for(unsigned int i = 1; i &lt;= 49; ++i)
        zahlen_zum_ziehen.push_back( i );

    for(unsigned int i = 1; i &lt;= 6; ++i)
    {
        unsigned int zufallsindex = std::uniform_int_distribution&lt;unsigned int&gt;(1,zahlen_zum_ziehen.size())(engine);

        std::cout &lt;&lt; &quot;gezogene Zufallszahl: &quot; &lt;&lt; zahlen_zum_ziehen[ zufallsindex ] &lt;&lt; std::endl;

		/*
        auto it = zahlen_zum_ziehen.begin() + zufallsindex;//hier kein -1
        zahlen_zum_ziehen.erase( it );
        */
        std::swap(zahlen_zum_ziehen[zufallsindex],zahlen_zum_ziehen[zahlen_zum_ziehen.size()-1]);
        zahlen_zum_ziehen.pop_back();
    }

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2387030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387030</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:49:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:50:00 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Und ich wundere mich über die immer gleiche Ausgabe.</p>
</blockquote>
<p>Also ich kriege</p>
<pre><code>gezogene Zufallszahl: 2
gezogene Zufallszahl: 3
gezogene Zufallszahl: 4
gezogene Zufallszahl: 8
gezogene Zufallszahl: 10
gezogene Zufallszahl: 12
</code></pre>
<p>Gruß,<br />
-- Klaus.</p>
</blockquote>
<p>Ich auch, und zwar JEDES mal. Hast aus Versehen [i] ausgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387031</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:52:03 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>Aber warum soll ich was tauschen? <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=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Weil erase auf die Mitte eines vectors furchtbar langsam ist! Da ist doch gerade der ganze Vorteil der Methode (nämlich dass sie in keinem Fall große Nachteile hat) futsch.</p>
<p>Ich sehe gerade, volkard hat das soeben gut vorgemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387033</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:52:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:54:12 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ich sage dem Zufallszahlengenerator, dass er mir Zufallszahlen von 1 bis 'Länge-der-zu-ziehenden-Zahlen' geben soll.</p>
</blockquote>
<p>Oh, die 0 vergessen. Da steht ja die 1, auch eine mögliche Zieh-Zahl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387034</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 07:57:18 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ich initialisiere den Generator immer wieder neu, mag vielleicht ein Problem sein.</p>
</blockquote>
<p>Jo. Aber die distribution hat vermutlich das gleiche Problem, daß sie nur Gleichverteilung über eine große Anzahl von Ziehungen garantiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387035</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 06 Mar 2014 07:57:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 08:00:15 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ich sage dem Zufallszahlengenerator, dass er mir Zufallszahlen von 1 bis 'Länge-der-zu-ziehenden-Zahlen' geben soll.</p>
</blockquote>
<p>Oh, die 0 vergessen. Da steht ja die 1, auch eine mögliche Zieh-Zahl.</p>
</blockquote>
<p>Kann sein, spiele kein Lotto. <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>Okay, dann verstehe ich das mit dem Swap. Ich war auf der 'stochastischen Ebene' und hatte mich gefragt, wo das Problem sei.</p>
<p>Also bei dem Vektor ist es das Problem, dass Indexzugriff vorliegt, d.h. sobald ich ein Element irgendwo lösche, muss der Indexzugriff neu sortiert werden - das kostet Zeit.</p>
<p>Also das Argument ist, zwei Elemente zu tauschen ist kein großer Aufwand, weil der Indexzugriff dadurch nicht gestört wird.</p>
<p>Und ein Element am Ende (oder am Beginn) zu löschen hält sich vom Aufwand ebenfalls in Grenzen - ja?</p>
<p>Ich hatte auch überlegt das ganze mit einer Liste zu machen, weil dann der Löschvorgang nicht aufwendig ist. Allerdings dann das Anzeigen der gezogenen Zahl, weil ich die Liste entlanglaufen muss:</p>
<pre><code class="language-cpp">std::list&lt;int&gt; zahlen_zum_ziehen;
// stuff
auto it = zahlen_zum_ziehen.begin() + zufallsindex -1;
std::cout &lt;&lt; &quot;Zufallszahl ist: &quot; &lt;&lt; *it &lt;&lt; std::endl;
</code></pre>
<p>Gruß,<br />
-- Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387036</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Thu, 06 Mar 2014 08:00:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 08:03:51 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ich sage dem Zufallszahlengenerator, dass er mir Zufallszahlen von 1 bis 'Länge-der-zu-ziehenden-Zahlen' geben soll.</p>
</blockquote>
<p>Oh, die 0 vergessen. Da steht ja die 1, auch eine mögliche Zieh-Zahl.</p>
</blockquote>
<p>Kann sein, spiele kein Lotto. <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>Den Index 0 haste vergessen, da steht die Lottozahl 1 drin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387039</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 06 Mar 2014 08:03:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 08:05:51 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Vorschlag für kleine Ämderungen</p>
<pre><code>// ......

		/*
        auto it = zahlen_zum_ziehen.begin() + zufallsindex;//hier kein -1
        zahlen_zum_ziehen.erase( it );
        */
        std::swap(zahlen_zum_ziehen[zufallsindex],zahlen_zum_ziehen[zahlen_zum_ziehen.size()-1]);
        zahlen_zum_ziehen.pop_back();
    }

    return 0;
}
</code></pre>
</blockquote>
<p>Ich werfe an der Stelle einfach mal das Erase-Remove-Idiom ein, wobei das schon fast eher Overkill ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387041</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 06 Mar 2014 08:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 08:11:40 GMT]]></title><description><![CDATA[<p>Hier stand Blödsinn - habs kapiert! <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/2387042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387042</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Thu, 06 Mar 2014 08:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 09:23:03 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ich hatte auch überlegt das ganze mit einer Liste zu machen, weil dann der Löschvorgang nicht aufwendig ist. Allerdings dann das Anzeigen der gezogenen Zahl, weil ich die Liste entlanglaufen muss:</p>
<pre><code class="language-cpp">std::list&lt;int&gt; zahlen_zum_ziehen;
// stuff
auto it = zahlen_zum_ziehen.begin() + zufallsindex -1;
std::cout &lt;&lt; &quot;Zufallszahl ist: &quot; &lt;&lt; *it &lt;&lt; std::endl;
</code></pre>
<p>Gruß,<br />
-- Klaus.</p>
</blockquote>
<p>Naja, bei uns ist das Initialisieren noch extrem aufwändig bei 6 aus 1000000, braucht immerhin mindestens mal am Anfang 1000000 Operationen.<br />
Ich schreibe mal allgemein k aus n.</p>
<p>Das muss auch unabhängig von n gehen. Vielleicht mit ungefähr k^2 Operationen, wenn man sich die gezogenen Zahlen merkt, statt der noch nicht gezogenen. Und damit meine ich nicht den Weg, so lange zu ziehen, bis man eine ungezogene hat, sondern schon echt einen Index ziehen und anhand der gezogenen die Zahl draus machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387070</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 06 Mar 2014 09:23:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 18:30:08 GMT]]></title><description><![CDATA[<p>Du Volkard, die Links unter Magazin - empfohlene Artikel lassen sich nicht aufrufen! Hast noch nicht gemerkt? <a href="http://www.c-plusplus.net/forum/310212" rel="nofollow">http://www.c-plusplus.net/forum/310212</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387201</guid><dc:creator><![CDATA[Sandor++]]></dc:creator><pubDate>Thu, 06 Mar 2014 18:30:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 18:42:05 GMT]]></title><description><![CDATA[<p>Sandor++ schrieb:</p>
<blockquote>
<p>Du Volkard, die Links unter Magazin - empfohlene Artikel lassen sich nicht aufrufen! Hast noch nicht gemerkt? <a href="http://www.c-plusplus.net/forum/310212" rel="nofollow">http://www.c-plusplus.net/forum/310212</a></p>
</blockquote>
<p>Bitte konkreter. Und Du wirst bemerken, daß keiner dieser Links meine Frage behandelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387206</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 06 Mar 2014 18:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zufallszahlenfolge on Thu, 06 Mar 2014 18:48:55 GMT]]></title><description><![CDATA[<p>Direkt unter dem Satz: Oft empfohlene Artikel sind unter anderem.<br />
[url]<br />
<a href="http://magazin.c-plusplus.net/artikel/Ein-%20und%20Ausgabe%20in%20CPlusPlus%20-%20IO-Streams" rel="nofollow">http://magazin.c-plusplus.net/artikel/Ein- und Ausgabe in CPlusPlus - IO-Streams</a><br />
[/url]</p>
<p>die restlichen darunter auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2387212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2387212</guid><dc:creator><![CDATA[Sandor++]]></dc:creator><pubDate>Thu, 06 Mar 2014 18:48:55 GMT</pubDate></item></channel></rss>