<?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[Shuffle Alogrithmus verstädnis frage]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe in einem Programm folgenden Shuffel Algorithmus:</p>
<pre><code class="language-cpp">void SkatGame::shuffle() 
{ 
	Card mem;
	int pos;

	for (int i = 0; i &lt; 32; i++)
		{
			pos = rand()%32;
			mem = deck[i];
			deck[i] = deck[pos];
			deck[pos] = mem;
		}
}
</code></pre>
<pre><code class="language-cpp">void SkatGame::deal()
{
	int pos=0;
	for (int i = 0; i &lt; 10; i++)
	{
		player1[i] = deck[pos];
		pos++;
	}

	for (int i = 0; i &lt; 10; i++)
	{
		player2[i] = deck[pos];
		pos++;
	}

	for (int i = 0; i &lt; 10; i++)
	{
		player3[i] = deck[pos];
		pos++;
	}

	for (int i = 0; i &lt; 2; i++)
	{
		skat[i] = deck[pos];
		pos++;
	}
</code></pre>
<p>Dabei handelt es sich wie man sieht um Skat also ein Kartendeck. Leider ist mir nicht völlig klar, wie hier die doppelte ausgabe einer Karte verhindert wird? eine Position könnet doch mit rand()%32 tehoretisch auch zweimal angepsurngen werden und somit 2 Spielern die gleiche karte gegeben werden, oder? Denn die Karte an sich wird ja aus dem Array deck nicht entfernt.</p>
<p>Eine Erklräung nahand des Codes wäre sehr nett, ich blicks einfach nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204399/shuffle-alogrithmus-verstädnis-frage</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 13:47:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204399.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Feb 2008 18:44:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Shuffle Alogrithmus verstädnis frage on Sat, 02 Feb 2008 18:44:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe in einem Programm folgenden Shuffel Algorithmus:</p>
<pre><code class="language-cpp">void SkatGame::shuffle() 
{ 
	Card mem;
	int pos;

	for (int i = 0; i &lt; 32; i++)
		{
			pos = rand()%32;
			mem = deck[i];
			deck[i] = deck[pos];
			deck[pos] = mem;
		}
}
</code></pre>
<pre><code class="language-cpp">void SkatGame::deal()
{
	int pos=0;
	for (int i = 0; i &lt; 10; i++)
	{
		player1[i] = deck[pos];
		pos++;
	}

	for (int i = 0; i &lt; 10; i++)
	{
		player2[i] = deck[pos];
		pos++;
	}

	for (int i = 0; i &lt; 10; i++)
	{
		player3[i] = deck[pos];
		pos++;
	}

	for (int i = 0; i &lt; 2; i++)
	{
		skat[i] = deck[pos];
		pos++;
	}
</code></pre>
<p>Dabei handelt es sich wie man sieht um Skat also ein Kartendeck. Leider ist mir nicht völlig klar, wie hier die doppelte ausgabe einer Karte verhindert wird? eine Position könnet doch mit rand()%32 tehoretisch auch zweimal angepsurngen werden und somit 2 Spielern die gleiche karte gegeben werden, oder? Denn die Karte an sich wird ja aus dem Array deck nicht entfernt.</p>
<p>Eine Erklräung nahand des Codes wäre sehr nett, ich blicks einfach nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448176</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Sat, 02 Feb 2008 18:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Shuffle Alogrithmus verstädnis frage on Sat, 02 Feb 2008 18:58:37 GMT]]></title><description><![CDATA[<p>das wird schlicht nicht verhindert. der code ist fehlerhaft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448180</guid><dc:creator><![CDATA[thordk_]]></dc:creator><pubDate>Sat, 02 Feb 2008 18:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to Shuffle Alogrithmus verstädnis frage on Sat, 02 Feb 2008 19:10:20 GMT]]></title><description><![CDATA[<p>der Code ist nicht fehlerhaft.</p>
<p>die kArte wird ja nicht verdoppelt, sondern mit einer anderen vertauscht!</p>
<pre><code class="language-cpp">mem = deck[i];        // Zwischenspeicher der Karte, die sich &quot;noch&quot; in deck[i] befindet
deck[i] = deck[pos];  // deck[i] mit der Karte aus deck[pos] überschreiben
deck[pos] = mem;      // in deck[pos] den alten Wert von deck[i] schreiben
</code></pre>
<p>wie man sieht eine ganz simple Sache <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/1448185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448185</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Sat, 02 Feb 2008 19:10:20 GMT</pubDate></item><item><title><![CDATA[Reply to Shuffle Alogrithmus verstädnis frage on Sat, 02 Feb 2008 19:43:11 GMT]]></title><description><![CDATA[<p>hm... aber es ist dann zumindest theoretisch möglich das eine Karte zweimal vertauscht wird, richtig? also es wird nicht jede karte zwangsweise einmal vertauscht? denn der wert von deck[pos] ist ja zufällig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448199</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Sat, 02 Feb 2008 19:43:11 GMT</pubDate></item><item><title><![CDATA[Reply to Shuffle Alogrithmus verstädnis frage on Sat, 02 Feb 2008 19:51:17 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1448058.html#1448058" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1448058.html#1448058</a></p>
<p>So geht das</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1448202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1448202</guid><dc:creator><![CDATA[C++ Obfuscator]]></dc:creator><pubDate>Sat, 02 Feb 2008 19:51:17 GMT</pubDate></item></channel></rss>