<?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[Boost Random Generator geschickt seeden]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich habe ein Problem mit dem Seeden von verschiedenen Random Generatoren mit der Boost Libary.</p>
<p>Ich habe ein Array von verschiedenen Objekten, die aber von der selben Klasse abgeleitet sind. In der Hauptklasse wird ein Random Generator aus der Boost Library benutzt.</p>
<p>Das Problem ist, dass die Objekte fast zur identischen Zeit erstellt werden. Somit kann ich nicht via</p>
<pre><code>time(NULL)
</code></pre>
<p>seeden. Dann gehe ich einmal davon aus, dass fast jeder Random Generator innerhalb des Objektarrays den identischen Seed-Status besitzt.</p>
<p>Dieses Problem wird schon in <a href="http://www.boost.org/doc/libs/1_53_0/libs/random/example/random_demo.cpp" rel="nofollow">http://www.boost.org/doc/libs/1_53_0/libs/random/example/random_demo.cpp</a> angesprochen:</p>
<pre><code>/*
   * Change seed to something else.
   *
   * Caveat: std::time(0) is not a very good truly-random seed.  When
   * called in rapid succession, it could return the same values, and
   * thus the same random number sequences could ensue.  If not the same
   * values are returned, the values differ only slightly in the
   * lowest bits.  A linear congruential generator with a small factor
   * wrapped in a uniform_smallint (see experiment) will produce the same
   * values for the first few iterations.   This is because uniform_smallint
   * takes only the highest bits of the generator, and the generator itself
   * needs a few iterations to spread the initial entropy from the lowest bits
   * to the whole state.
   */
</code></pre>
<p><strong>Hat einer eine Idee, wie man effektiv mehrere Randomgeneratoren unterschiedlich innerhalb kürzester Zeit seedet?</strong></p>
<p>Wenn ich nach jedem Seed automatisch ein sleep Befehl einsetze und trotzdem mit</p>
<pre><code>time(NULL)
</code></pre>
<p>im Seed arbeite, kommt mir das nicht als effektiv vor.</p>
<p>Danke für eure Antworten</p>
<p>Jan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316776/boost-random-generator-geschickt-seeden</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 17:15:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316776.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 May 2013 09:36:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Thu, 16 May 2013 09:36:28 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich habe ein Problem mit dem Seeden von verschiedenen Random Generatoren mit der Boost Libary.</p>
<p>Ich habe ein Array von verschiedenen Objekten, die aber von der selben Klasse abgeleitet sind. In der Hauptklasse wird ein Random Generator aus der Boost Library benutzt.</p>
<p>Das Problem ist, dass die Objekte fast zur identischen Zeit erstellt werden. Somit kann ich nicht via</p>
<pre><code>time(NULL)
</code></pre>
<p>seeden. Dann gehe ich einmal davon aus, dass fast jeder Random Generator innerhalb des Objektarrays den identischen Seed-Status besitzt.</p>
<p>Dieses Problem wird schon in <a href="http://www.boost.org/doc/libs/1_53_0/libs/random/example/random_demo.cpp" rel="nofollow">http://www.boost.org/doc/libs/1_53_0/libs/random/example/random_demo.cpp</a> angesprochen:</p>
<pre><code>/*
   * Change seed to something else.
   *
   * Caveat: std::time(0) is not a very good truly-random seed.  When
   * called in rapid succession, it could return the same values, and
   * thus the same random number sequences could ensue.  If not the same
   * values are returned, the values differ only slightly in the
   * lowest bits.  A linear congruential generator with a small factor
   * wrapped in a uniform_smallint (see experiment) will produce the same
   * values for the first few iterations.   This is because uniform_smallint
   * takes only the highest bits of the generator, and the generator itself
   * needs a few iterations to spread the initial entropy from the lowest bits
   * to the whole state.
   */
</code></pre>
<p><strong>Hat einer eine Idee, wie man effektiv mehrere Randomgeneratoren unterschiedlich innerhalb kürzester Zeit seedet?</strong></p>
<p>Wenn ich nach jedem Seed automatisch ein sleep Befehl einsetze und trotzdem mit</p>
<pre><code>time(NULL)
</code></pre>
<p>im Seed arbeite, kommt mir das nicht als effektiv vor.</p>
<p>Danke für eure Antworten</p>
<p>Jan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323690</guid><dc:creator><![CDATA[Jan-H.]]></dc:creator><pubDate>Thu, 16 May 2013 09:36:28 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Thu, 16 May 2013 09:52:44 GMT]]></title><description><![CDATA[<p>Warum upgradest du nicht mit C++11? Da ist das alles drin.</p>
<p>Jan-H. schrieb:</p>
<blockquote>
<p>Hat einer eine Idee, wie man effektiv mehrere Randomgeneratoren unterschiedlich innerhalb kürzester Zeit seedet?</p>
</blockquote>
<p><a href="http://en.cppreference.com/w/cpp/numeric/random/seed_seq" rel="nofollow">http://en.cppreference.com/w/cpp/numeric/random/seed_seq</a><br />
(die gleiche Klasse gibt es auch in Boost: <a href="http://www.boost.org/doc/libs/1_53_0/boost/random/seed_seq.hpp" rel="nofollow">http://www.boost.org/doc/libs/1_53_0/boost/random/seed_seq.hpp</a>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323694</guid><dc:creator><![CDATA[seedy]]></dc:creator><pubDate>Thu, 16 May 2013 09:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Thu, 16 May 2013 10:52:23 GMT]]></title><description><![CDATA[<p>@seedy<br />
Ach tolle Antwurst.<br />
Und mit was soll er die <code>seed_seq</code> dann Initialisieren?</p>
<p>@Jan-H.<br />
Zum Seeden nimmste das:<br />
<a href="http://www.boost.org/doc/libs/1_53_0/doc/html/boost/random/random_device.html" rel="nofollow">http://www.boost.org/doc/libs/1_53_0/doc/html/boost/random/random_device.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323706</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 16 May 2013 10:52:23 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Thu, 16 May 2013 11:25:17 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: Auch tolle Antwort.<br />
random_device blockiert, wenn im Device keine Zufallszahlen stehen. Der OP will aber &quot;effektiv mehrere Randomgeneratoren unterschiedlich innerhalb kürzester Zeit seedet&quot;, dafür ist random_device nicht geeignet.</p>
<p>Eine Variante wäre, seed_seq mit dem random_device zu initialisieren. seed_seq mit time(0) zu initialisieren wäre aber auch gangbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323713</guid><dc:creator><![CDATA[seedy]]></dc:creator><pubDate>Thu, 16 May 2013 11:25:17 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Thu, 16 May 2013 11:52:15 GMT]]></title><description><![CDATA[<p>Einfach ein Zufallszahlengenerator mit time(0) initialisieren und den fuer die anderen Zufallsgeneratoren zum Initialisieren benutzen.</p>
<blockquote>
<p>All problems in computer science can be solved by another level of indirection.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2323719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323719</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 16 May 2013 11:52:15 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Thu, 16 May 2013 20:23:43 GMT]]></title><description><![CDATA[<p>seedy schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: Auch tolle Antwort.<br />
random_device blockiert, wenn im Device keine Zufallszahlen stehen. Der OP will aber &quot;effektiv mehrere Randomgeneratoren unterschiedlich innerhalb kürzester Zeit seedet&quot;, dafür ist random_device nicht geeignet.</p>
</blockquote>
<p>Check mal deine Fakten bevor du Behauptungen aufstellst...</p>
<p><code>/dev/random</code> blockiert.</p>
<p>Boosts <code>random_device</code> verwendet per Default aber nicht <code>/dev/random</code> , sondern <code>/dev/urandom</code> . Sinnvollerweise. Weil das halt nicht blockiert. Bzw. auf Windows CryptGenRandom mit dem Default-Provider. Was genau so wenig blockiert.</p>
<blockquote>
<p>Eine Variante wäre, seed_seq mit dem random_device zu initialisieren. seed_seq mit time(0) zu initialisieren wäre aber auch gangbar.</p>
</blockquote>
<p>Zeig mal wie du einfach und elegant mehrere Generatoren mit <em>einer</em> <code>seed_seq</code> initialisierst, die nur <em>fast zur identischen Zeit</em> (Zitat OP) initialisiert werden.</p>
<p>Jedes mal einfach <code>seq.generate()</code> aufrufen wird nicht so gut funktionieren, da werden jedes mal die gleichen Zahlen rauskommen (zumindest wenn man jedes mal gleich viel Zahlen generieren lässt).</p>
<p>D.h. man müsste vorplanen und die Werte irgendwo zwischenspeichern.</p>
<p>Mein Vorschlag:</p>
<p>Einen &quot;Seed-Generator&quot; mit <code>random_device</code> initialisieren. (Ob man dabei noch <code>seed_seq</code> als Zwischenschritt verwendet sollte ziemlich egal sein.)<br />
Und aus dem &quot;Seed-Generator&quot; zieht man sich dann die benötigten Seeds für die anderen Generatoren.</p>
<p>EDIT: hab jetzt erst gesehen dass knivil schon den selben Vorschlag gemacht hat (nur halt mit <code>time()</code> statt <code>random_device</code> , was ja kein prinzipieller Unterschied ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323865</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 16 May 2013 20:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Thu, 16 May 2013 20:48:17 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>seedy schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: Auch tolle Antwort.<br />
random_device blockiert, wenn im Device keine Zufallszahlen stehen. Der OP will aber &quot;effektiv mehrere Randomgeneratoren unterschiedlich innerhalb kürzester Zeit seedet&quot;, dafür ist random_device nicht geeignet.</p>
</blockquote>
<p>Check mal deine Fakten bevor du Behauptungen aufstellst...</p>
<p><code>/dev/random</code> blockiert.</p>
<p>Boosts <code>random_device</code> verwendet per Default aber nicht <code>/dev/random</code> , sondern <code>/dev/urandom</code> . Sinnvollerweise. Weil das halt nicht blockiert. Bzw. auf Windows CryptGenRandom mit dem Default-Provider. Was genau so wenig blockiert.</p>
</blockquote>
<p>Aber man ne Platte mit dd -if /dev/urandom gelöscht statt dd -if /dev/zero?<br />
Da liegen Welten dazwischen.<br />
urandom ist nicht besser anzunehmen als ein eigener Zufallzahlengenerator. Und im konkreten Problem reicht sicherlich</p>
<p>seed*=563773;//random digits found by <a href="http://pure-random.org" rel="nofollow">pure-random.org</a></p>
<p>Naja, die Zahl sollte ungerade sein, klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323872</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 16 May 2013 20:48:17 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Thu, 16 May 2013 23:26:37 GMT]]></title><description><![CDATA[<p>Könnte man nicht erst einen Zufallsgenerator den man nicht verwendet mit time(0) initialisieren und dann von diesem Zufallszahlen ziehen die man dann zur initialisierung der anderen Generatoren verwendet?</p>
<p>Wäre im Prinzip das gleiche wie /dev/urandom, aber platformunabhängig.<br />
Oder habe ich was falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323886</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 16 May 2013 23:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Fri, 17 May 2013 00:13:34 GMT]]></title><description><![CDATA[<p>Scorcher24: Ja, schon, aber das wurde auch schon vorgeschlagen. <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 />
hustbaer: Naja, seed_seq verbessert ja anscheinend noch irgendwie die Verteilung der Entropie in den Ausgangswerten, weshalb es sich als vorteilhaft erweisen könnte, es zu benutzen, um den eigentlichen Startwert für den Generator, mit dem die anderen Startwerte erzeugt werden sollen, zu ermitteln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323892</guid><dc:creator><![CDATA[Sonnenhafen]]></dc:creator><pubDate>Fri, 17 May 2013 00:13:34 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Fri, 17 May 2013 06:56:33 GMT]]></title><description><![CDATA[<p>Also bei mir liegt auf der Platte das:</p>
<pre><code>template&lt;typename _RandomAccessIterator&gt;
    void
    seed_seq::generate(_RandomAccessIterator __begin,
		       _RandomAccessIterator __end)
    {
      typedef typename iterator_traits&lt;_RandomAccessIterator&gt;::value_type
        _Type;

      if (__begin == __end)
	return;

      std::fill(__begin, __end, _Type(0x8b8b8b8bu));

      const size_t __n = __end - __begin;
      const size_t __s = _M_v.size();
      const size_t __t = (__n &gt;= 623) ? 11
		       : (__n &gt;=  68) ? 7
		       : (__n &gt;=  39) ? 5
		       : (__n &gt;=   7) ? 3
		       : (__n - 1) / 2;
      const size_t __p = (__n - __t) / 2;
      const size_t __q = __p + __t;
      const size_t __m = std::max(size_t(__s + 1), __n);

      for (size_t __k = 0; __k &lt; __m; ++__k)
	{
	  _Type __arg = (__begin[__k % __n]
			 ^ __begin[(__k + __p) % __n]
			 ^ __begin[(__k - 1) % __n]);
	  _Type __r1 = __arg ^ (__arg &gt;&gt; 27);
	  __r1 = __detail::__mod&lt;_Type,
		    __detail::_Shift&lt;_Type, 32&gt;::__value&gt;(1664525u * __r1);
	  _Type __r2 = __r1;
	  if (__k == 0)
	    __r2 += __s;
	  else if (__k &lt;= __s)
	    __r2 += __k % __n + _M_v[__k - 1];
	  else
	    __r2 += __k % __n;
	  __r2 = __detail::__mod&lt;_Type,
	           __detail::_Shift&lt;_Type, 32&gt;::__value&gt;(__r2);
	  __begin[(__k + __p) % __n] += __r1;
	  __begin[(__k + __q) % __n] += __r2;
	  __begin[__k % __n] = __r2;
	}

      for (size_t __k = __m; __k &lt; __m + __n; ++__k)
	{
	  _Type __arg = (__begin[__k % __n]
			 + __begin[(__k + __p) % __n]
			 + __begin[(__k - 1) % __n]);
	  _Type __r3 = __arg ^ (__arg &gt;&gt; 27);
	  __r3 = __detail::__mod&lt;_Type,
		   __detail::_Shift&lt;_Type, 32&gt;::__value&gt;(1566083941u * __r3);
	  _Type __r4 = __r3 - __k % __n;
	  __r4 = __detail::__mod&lt;_Type,
	           __detail::_Shift&lt;_Type, 32&gt;::__value&gt;(__r4);
	  __begin[(__k + __p) % __n] ^= __r3;
	  __begin[(__k + __q) % __n] ^= __r4;
	  __begin[__k % __n] = __r4;
	}
    }
</code></pre>
<p>Es geht nur darum, schnell Zahlen zu produzieren, die nicht arg dicht beieinander liegen. Weil manche Zufallszahlengeneratoren die Tendenz haben könnten, bei nah beieinander liegenden Seed-Zahlen ein Weilchen zu hoppeln, bevor sie gut loslaufen.<br />
Dabei wird von seed_seq die reingestopfte Entropie nicht vergößert, sondern nur über die angeforderten Bits hübsch gespreizt.<br />
Ein Schnittstelle für seed-hungrige Generatoren wie den lästigen Mersenne Twister, damit der Programmierer time(0) nehmen kann und der andere 30 Bytes aus /dev/random.</p>
<p>Und darum brauche ich sowas normalerweise auch nicht. Lieber gehe ich mal mit dem Satz von Vera Turán Sós und Knuths Phi auf eine kleine Teeparty.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323903</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 17 May 2013 06:56:33 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Fri, 17 May 2013 10:03:54 GMT]]></title><description><![CDATA[<p>BTW: In der Boost ist seed_seq::generate ne const Memberfunktion. Jemand ne Ahnung wieso die standardisierte Variante nimmer const ist? Non-const macht doch genau gar keinen Sinn...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323954</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 17 May 2013 10:03:54 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Fri, 17 May 2013 10:21:40 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>BTW: In der Boost ist seed_seq::generate ne const Memberfunktion. Jemand ne Ahnung wieso die standardisierte Variante nimmer const ist? Non-const macht doch genau gar keinen Sinn...</p>
</blockquote>
<p>Doch.<br />
Damit ein generate-aufruf die Verwürfelung des letzten generate-aufrufs zusätzlich verwenden *darf*.<br />
<a href="http://en.cppreference.com/w/cpp/concept/SeedSequence" rel="nofollow">http://en.cppreference.com/w/cpp/concept/SeedSequence</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323962</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 17 May 2013 10:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Fri, 17 May 2013 11:11:23 GMT]]></title><description><![CDATA[<p>Es wäre noch eine möglichkeit eine der clocks aus std::chrono zu verwenden. Eine high_resolution_clock wird bei vermutlich jedem Aufruf von now() etwas anderes zurückgeben - &quot;vermutlich&quot; weil meines Wissens nach die MSVC-Implementierung immer noch eine Katastrophe ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323976</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Fri, 17 May 2013 11:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Fri, 17 May 2013 11:36:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a><br />
Wo ist der Sinn in *darf*?<br />
Was bringt es mir wenn man sich nicht drauf verlassen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323989</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 17 May 2013 11:36:14 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Fri, 17 May 2013 11:48:42 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a><br />
Wo ist der Sinn in *darf*?<br />
Was bringt es mir wenn man sich nicht drauf verlassen kann?</p>
</blockquote>
<p>Dir bringt es nix, in der Tat, es ist sogar ein wenig nervig.<br />
Aber es kann sein, daß der Implemetierer die eingefüllten Zahlen selber verwürfeln mag, weil sein Verfahren dann vielleicht viel einfacher wird oder schneller oder irgendwas.<br />
Stände da *muss*, dann würden alle Leute seed_seq statt der richtigen Zufallszahlengeneratoren nehmen und die Software-Quali ganz hübsch senken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323997</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 17 May 2013 11:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to Boost Random Generator geschickt seeden on Fri, 17 May 2013 15:47:44 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>:<br />
Jo, pfuh! Sehr nervig würd ich sogar sagen.<br />
Ich hätte vermutlich einfach die genaue Implementierung vorgeschrieben.</p>
<p>Wer kryptographisch sicher sein will kann eine Klasse die nen nicht genauer spezifizierten Algo verwendet eh nicht brauchen.<br />
Und für die die &quot;kryptographisch sicher&quot; nicht brauchen ist der Algo aus der Boost sicher gut genug. Der stört sich nicht am <code>const</code> , und man wüsste dann wenigstens genau womit man es zu tun hat.</p>
<blockquote>
<p>Stände da *muss*, dann würden alle Leute seed_seq statt der richtigen Zufallszahlengeneratoren nehmen und die Software-Quali ganz hübsch senken.</p>
</blockquote>
<p>Und so wird es dazu führen dass sich manche Leute darauf verlassen dass immer die selben Zahlen rauskommen. Weil sie's von der Boost so gewöhnt sind, und weil ihre Implementierung es so macht.</p>
<p>Wird zugegebenermassen weniger Leute betreffen, weil weniger Leute Bedarf dafür haben werden einen Generator über eine seed_seq mehrfach in den gleichen Zustand zu versetzen.<br />
Davon abgesehen finde ich das aber genau so doof.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2324071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2324071</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 17 May 2013 15:47:44 GMT</pubDate></item></channel></rss>