<?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[Mersenne Twister als RNG für random_shuffle]]></title><description><![CDATA[<p>Hallo,</p>
<p>in der CPP-Referenz steht, dass man einen &quot;eigenen&quot; RNG als Zufallsgenerator verwenden kann. <a href="http://www.cplusplus.com/reference/algorithm/random_shuffle/" rel="nofollow">http://www.cplusplus.com/reference/algorithm/random_shuffle/</a></p>
<pre><code>template &lt;class RandomAccessIterator, class RandomNumberGenerator&gt;
  void random_shuffle ( RandomAccessIterator first, RandomAccessIterator last,
                        RandomNumberGenerator&amp; rand );
</code></pre>
<p>Nun wollte ich von <a href="http://www-personal.umich.edu/~wagnerr/MersenneTwister.html" rel="nofollow">http://www-personal.umich.edu/~wagnerr/MersenneTwister.html</a> die Funktion verwenden. Ich hab einen Vector von der Größe unsigned long int, welcher Strings enthält.</p>
<p>Wie kann ich das verwirklichen?!?<br />
Das Problem ist, dass das Programm mehrfach pro Sekunde gestartet wird und man dann immer den gleichen (wenn nicht sogar &quot;selben&quot;) Vector erhält.</p>
<p>Danke und viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291978/mersenne-twister-als-rng-für-random_shuffle</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 08:17:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291978.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 Aug 2011 12:18:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 12:18:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in der CPP-Referenz steht, dass man einen &quot;eigenen&quot; RNG als Zufallsgenerator verwenden kann. <a href="http://www.cplusplus.com/reference/algorithm/random_shuffle/" rel="nofollow">http://www.cplusplus.com/reference/algorithm/random_shuffle/</a></p>
<pre><code>template &lt;class RandomAccessIterator, class RandomNumberGenerator&gt;
  void random_shuffle ( RandomAccessIterator first, RandomAccessIterator last,
                        RandomNumberGenerator&amp; rand );
</code></pre>
<p>Nun wollte ich von <a href="http://www-personal.umich.edu/~wagnerr/MersenneTwister.html" rel="nofollow">http://www-personal.umich.edu/~wagnerr/MersenneTwister.html</a> die Funktion verwenden. Ich hab einen Vector von der Größe unsigned long int, welcher Strings enthält.</p>
<p>Wie kann ich das verwirklichen?!?<br />
Das Problem ist, dass das Programm mehrfach pro Sekunde gestartet wird und man dann immer den gleichen (wenn nicht sogar &quot;selben&quot;) Vector erhält.</p>
<p>Danke und viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112913</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 12:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 12:26:33 GMT]]></title><description><![CDATA[<p>railrun schrieb:</p>
<blockquote>
<p>Wie kann ich das verwirklichen?!?</p>
</blockquote>
<p>Was ist denn dein Problem dabei?</p>
<blockquote>
<p>Das Problem ist, dass das Programm mehrfach pro Sekunde gestartet wird und man dann immer den gleichen (wenn nicht sogar &quot;selben&quot;) Vector erhält.</p>
</blockquote>
<p>Dann solltest du weitere Entropiequellen benutzen als nur die Uhrzeit. Etwas wo man noch leicht dran kommt und was innerhalb einer Sekunde ziemlich eindeutig ist, ist zum Beispiel die Prozessnummer. Viele Betriebssysteme bieten auch Quellen von echten oder auch Pseudozufallszahlen die du - je nach Anspruch - beim erzeugen des Seeds benutzen kannst.</p>
<p>(P.S.: Der Mersenne-Twister hat hier im Forum (durchaus zu Recht, wie ich finde) nicht ganz so den guten Ruf wie es die vor Lob überschäumende Wikipediaseite vermuten lässt. Es gibt genau so gute aber wesentlich schnellere PRNGs)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112917</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 31 Aug 2011 12:26:33 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 12:32:07 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>(P.S.: Der Mersenne-Twister hat hier im Forum (durchaus zu Recht, wie ich finde) nicht ganz so den guten Ruf wie es die vor Lob überschäumende Wikipediaseite vermuten lässt. Es gibt genau so gute aber wesentlich schnellere PRNGs)</p>
</blockquote>
<p>Danke SeppJ für die schnelle Antwort. Welchen RNG würdest du denn empfehlen?<br />
Mein Problem ist, dass ich mít References&amp;Pointern immer noch auf Kriegsfuss stehe und ich nicht weiß, wie &quot;RandomNumberGenerator&amp; rand&quot; ich das einbinden soll... Ist vielleicht ein Armutszeugnis <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> , aber bisher hab ich versucht mir alles selber beizubringen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112920</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 12:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 12:49:15 GMT]]></title><description><![CDATA[<p>railrun schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>(P.S.: Der Mersenne-Twister hat hier im Forum (durchaus zu Recht, wie ich finde) nicht ganz so den guten Ruf wie es die vor Lob überschäumende Wikipediaseite vermuten lässt. Es gibt genau so gute aber wesentlich schnellere PRNGs)</p>
</blockquote>
<p>Danke SeppJ für die schnelle Antwort. Welchen RNG würdest du denn empfehlen?</p>
</blockquote>
<p>Kommt drauf an, wofür :p . Ein paar Strings zu shuffeln klingt eigentlich nach einem Fall für den Standardgenerator.</p>
<blockquote>
<p>Mein Problem ist, dass ich mít References&amp;Pointern immer noch auf Kriegsfuss stehe und ich nicht weiß, wie &quot;RandomNumberGenerator&amp; rand&quot; ich das einbinden soll... Ist vielleicht ein Armutszeugnis <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> , aber bisher hab ich versucht mir alles selber beizubringen...</p>
</blockquote>
<p>Hmm, dann solltest du das vielleicht mal nachholen. Das (die Referenzen, nicht unbedingt die Pointer) sind ziemliche Grundlagen, um in C++ überhaupt irgendetwas machen zu können. Und ist auch nicht schwer, das kannst du in ein paar Stunden lernen und verstehen.</p>
<p>Die Referenz die du verlinkst zeigt ja schon ein Beispiel. Jedoch gehen die über drei Ecken, um alle Möglichkeiten zu zeigen. Vielleicht ist es dir so verständlicher:</p>
<pre><code class="language-cpp">int myrandom (int i) { return rand()%i;}

int main () {
  vector&lt;int&gt; myvector;
  for (int i=1; i&lt;10; ++i) myvector.push_back(i); 

  random_shuffle ( myvector.begin(), myvector.end(), myrandom);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2112934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112934</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 31 Aug 2011 12:49:15 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 13:05:01 GMT]]></title><description><![CDATA[<p>Hallo SeppJ,</p>
<p>ja, es steht ganz oben auf meine To-Learn-Liste <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 die Standard-Funktion ist eben das Problem, da dass Programm mehrmals pro Sekunde aufgerufen wird. Hab es mir in einer Schleife ausgeben lassen und wer hätte es nicht gedacht <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>
<pre><code>5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0 
5 4 8 9 1 6 3 2 7 0
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2112949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112949</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 13:05:01 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 13:09:28 GMT]]></title><description><![CDATA[<p>Ich glaube eher du rufst srand() in deiner Schleife dauernd auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112953</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 13:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 13:13:19 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Ich glaube eher du rufst srand() in deiner Schleife dauernd auf.</p>
</blockquote>
<p>Jein.<br />
Ich rufe das Programm mehrfach pro Sekunde auf <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/2112955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112955</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 13:13:19 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 13:15:40 GMT]]></title><description><![CDATA[<p>Öhm ja, verlesen. Dann nimm doch einen anderen Seed, zum Beispiel die Nanosekunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112956</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 13:15:40 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 13:18:05 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Öhm ja, verlesen. Dann nimm doch einen anderen Seed, zum Beispiel die Nanosekunden.</p>
</blockquote>
<p>Und wie bring ich es dem random_shuffle bei?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112959</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 13:18:05 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 13:24:20 GMT]]></title><description><![CDATA[<p>Indem du einfach srand() aufrufst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112964</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 13:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 13:39:28 GMT]]></title><description><![CDATA[<p>Ich wiederhole mich:</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>railrun schrieb:</p>
<blockquote>
<p>Das Problem ist, dass das Programm mehrfach pro Sekunde gestartet wird und man dann immer den gleichen (wenn nicht sogar &quot;selben&quot;) Vector erhält.</p>
</blockquote>
<p>Dann solltest du weitere Entropiequellen benutzen als nur die Uhrzeit. Etwas wo man noch leicht dran kommt und was innerhalb einer Sekunde ziemlich eindeutig ist, ist zum Beispiel die Prozessnummer. Viele Betriebssysteme bieten auch Quellen von echten oder auch Pseudozufallszahlen die du - je nach Anspruch - beim Erzeugen des Seeds benutzen kannst.</p>
</blockquote>
<p>Da hilft dir auch der Mersenne Twister nichts, wenn du als Seed eine sekundengenaue Uhrzeit benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112972</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 31 Aug 2011 13:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 13:59:18 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Indem du einfach srand() aufrufst?</p>
</blockquote>
<p>So?!</p>
<pre><code class="language-cpp">int myrandom(int i) {
	return rand() % i;
}

int main() {
	srand(static_cast&lt;int&gt; (time(NULL)));
	vector&lt;int&gt; myvector;
	for (int i = 1; i &lt; 10; ++i)
		myvector.push_back(i);

	random_shuffle(myvector.begin(), myvector.end(), myrandom);

	for (int j = 0; j &lt; 10; j++) {
		cout &lt;&lt; myvector[j] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;
}
</code></pre>
<p>Da kommt das gleiche raus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112984</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 13:59:18 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:05:58 GMT]]></title><description><![CDATA[<p>Liest du überhaupt, was SeppJ und ich schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112990</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:23:47 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Liest du überhaupt, was SeppJ und ich schreiben?</p>
</blockquote>
<p>Auch wenn ich ebenfalls enttäuscht über das nicht vorhandene Mitdenken des Threaderstellers bin, hier trotzdem ein Beispiel, weil es prinzipiell über die Standard-Sprachmittel hinausgeht:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;iostream&gt;

#ifdef _WIN32
 #include &lt;windows.h&gt;
#define GET_PID GetCurrentProcessId()
#elif defined(__linux) or defined (linux)
 #include &lt;unistd.h&gt;
 #define GET_PID getpid()
#else
 #error &quot;Geht nur in Windows oder Linux&quot;
#endif 

using namespace std;

int main() 
{
  srand(time(0)*GET_PID);
  vector&lt;int&gt; myvector;
  for (int i = 0; i &lt; 10; ++i)
    myvector.push_back(i);

  random_shuffle(myvector.begin(), myvector.end());

  for (int j = 0; j &lt; 10; j++) {
    cout &lt;&lt; myvector[j] &lt;&lt; &quot; &quot;;
  }
  cout &lt;&lt; '\n';
}
</code></pre>
<p>Kann jemand den Windows-Pfad testen? Habe keines <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>Das ist jetzt nur ein ganz rudimentäres Beispiel. Mit beispielsweise der boost Zufallszahlenbibliothek kann man sich das ganze systemabhängige Gefummel und das Nachschlagen aller Präprozessormakros sparen, weil das schon jemand erledigt hat. Oder alternativ bietet die Uhrzeitbibliothek von boost auch hochaufgelöste Timer, systemunabhängig gekapselt. Und es gibt die schon erwähnten Zufallszahlenquellen in verschiedenen Stärken, die von vielen Betriebssystemen angeboten werden.</p>
<p>edit: Und noch ein paar der schlimmeren Fehler und Ungenauigkeiten aus dem vom Threadersteller übernommenen Code entfernt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112999</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:23:57 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Liest du überhaupt, was SeppJ und ich schreiben?</p>
</blockquote>
<p>Den letzten Beitrag von SeppJ hab ich gerade erst gesehen, sorry.<br />
Wenn du sagst, ich soll srand() aufrufen, dann sagt mir das herzlich wenig, sorry.<br />
Ich hab jetzt mal geschaut, dass ich auf /dev/urandom bzw. /dev/random zugreife und dann srand((time(NULL)+seed)); aufrufe.</p>
<p>Aber danke für dir Hilfe... Das man immer gleich geflamed wird...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113001</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:23:57 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:25:07 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>edit: Und noch ein paar der schlimmeren Fehler und Ungenauigkeiten aus dem vom Threadersteller übernommenen Code entfernt.</p>
</blockquote>
<p>Und welche wären das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113002</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:27:25 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Öhm ja, verlesen. Dann nimm doch einen anderen Seed, zum Beispiel die Nanosekunden.</p>
</blockquote>
<p>Und sag bloß nicht, du hast den Post auch überlesen. Du hast sogar darauf geantwortet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113008</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:30:20 GMT]]></title><description><![CDATA[<p>railrun schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>edit: Und noch ein paar der schlimmeren Fehler und Ungenauigkeiten aus dem vom Threadersteller übernommenen Code entfernt.</p>
</blockquote>
<p>Und welche wären das?</p>
</blockquote>
<p>Zum Beispiel hast du nur 9 Elemente eingefügt, aber 10 ausgegeben.</p>
<p>Das myrandom war nicht ganz so sinnvoll. Klar das hast du von mir, aber das war eigentlich nur ein Beispiel, wie so eine Funktion aussehen kann. Aber rand selbst zu kapseln bringt herzlich wenig, da es schon der Standard ist.</p>
<p>Wenn du '\n' meinst, sag '\n', nicht endl, welches '\n' und flush entspricht.</p>
<p>Der staitc_cast war total unnötig.</p>
<p>Also (bis auf die Ausgabe über das Feldende hinaus) eher Kleinigkeiten. Der Unterschied zwischen 9 und 10 ist jedoch schon ein grober Fehler gewesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113012</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:37:47 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">srand(time(0)*GET_PID);
</code></pre>
</blockquote>
<p>Sünde!<br />
+ oder ^ waren doch voll in Ordnung (aber zu langweilig?).<br />
Das Ergebnis der Plutimikation hat so viele Nullen am Ende wie beide Faktoren zusammen. Das heißt, mit * ballerst Du Dir die teuer besorgten Entropiebits einfach wieder raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113015</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:35:35 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">srand(time(0)*GET_PID);
</code></pre>
</blockquote>
<p>Sünde!<br />
Das Ergebnis der Plutimikation hat so viele Nullen am Ende wie beide Faktoren zusammen.</p>
</blockquote>
<p><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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113019</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:35:35 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:40:53 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Öhm ja, verlesen. Dann nimm doch einen anderen Seed, zum Beispiel die Nanosekunden.</p>
</blockquote>
<p>Und sag bloß nicht, du hast den Post auch überlesen. Du hast sogar darauf geantwortet.</p>
</blockquote>
<p>Da hätte ich auf eine etwas ausführlichere Erklärung gehofft...</p>
<p>Ich hab dich gefragt,</p>
<blockquote>
<p>Und wie bring ich es dem random_shuffle bei?!</p>
</blockquote>
<p>Deine Antwort darauf:</p>
<blockquote>
<p>Indem du einfach srand() aufrufst?</p>
</blockquote>
<p>Da ich damit nicht weiterkam, hab ich im Netz geschaut und es in meinem Code eingebaut...<br />
Gegenfrage: Hast du es dir durchgelesen?!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a><br />
Zum Fehler... In der Tat... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> Die Schleife hab ich mir aus einem anderen Programm schnell rauskopiert, wo ich eine 2D-Vektor hatte. Danke für den Hinweis (das ist ehrlich gemeint!)<br />
Static cast hatte ich aus einem Beispiel im Internet (siehe oben, meine Frage wie ich srand() aufrufen soll).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113022</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:40:53 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:47:58 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>+ oder ^ waren doch voll in Ordnung (aber zu langweilig?).<br />
Das Ergebnis der Plutimikation hat so viele Nullen am Ende wie beide Faktoren zusammen. Das heißt, mit * ballerst Du Dir die teuer besorgten Entropiebits einfach wieder raus.</p>
</blockquote>
<p>Oh, stimmt. War ohne viel Nachdenken. Da mein RAND_MAX 2^31 ist, hat's sogar funktioniert und ist nicht aufgefallen.</p>
<p>Frei nach Knuth ist dies ein guter Seed, falls man nicht urandom &amp; Co nehmen kann:</p>
<pre><code class="language-cpp">const uint64_t golden_ratio = 0x9e3779b97f4a7c13LL;
seed = getpid();
seed *= ratio;
seed ^= time(0);
seed *= ratio;
</code></pre>
<p>Aber solche Zahlenmagie mag ich nicht sehr, weil ich nie verstehe was da genau hinter steckt. Für mich sieht das wie gut geraten aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113024</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:47:58 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:43:29 GMT]]></title><description><![CDATA[<p>Und was ist an meinen Antworten jetzt aus deiner Sicht nicht verständlich? Mein Vorschlag war, dass du srand() mit den Nanosekunden aufrufst, weil sich damit die Zeit zwischen deinen Programmstarts ändert. SeppJ's Vorschlag ist auch eine Möglichkeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113025</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:53:45 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Und was ist an meinen Antworten jetzt aus deiner Sicht nicht verständlich? Mein Vorschlag war, dass du srand() mit den Nanosekunden aufrufst, weil sich damit die Zeit zwischen deinen Programmstarts ändert. SeppJ's Vorschlag ist auch eine Möglichkeit.</p>
</blockquote>
<p>Ja und wie rufe ich es jetzt genau auf?! Diese Info hat den gleichen Informationsgehalt wie der Post von vorhin (Indem du einfach srand() aufrufst?).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113032</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 14:55:27 GMT]]></title><description><![CDATA[<p>Den restlichen Informationsgehalt darfst du dir selbstverständlich zusammengoogeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113035</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to Mersenne Twister als RNG für random_shuffle on Wed, 31 Aug 2011 15:00:20 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Den restlichen Informationsgehalt darfst du dir selbstverständlich zusammengoogeln.</p>
</blockquote>
<p>Danke <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="🙄"
    /><br />
Was dann rauskommt, haben wir ja gesehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113046</guid><dc:creator><![CDATA[railrun]]></dc:creator><pubDate>Wed, 31 Aug 2011 15:00:20 GMT</pubDate></item></channel></rss>