<?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[Auch  (double(rand())&#x2F;RAND_MAX)  erzeugt keine „echten“ Zufallszahlen]]></title><description><![CDATA[<p>Hallo,<br />
vielfach wird in den Fachbüchern behauptet, dass man mit (double(rand())/RAND_MAX) in Verbindung mit der Initialisierung srand(time(0)) „echte“ Zufallszahlen erhält.<br />
Dies kann ich leider nicht bestätigen. Selbst bei 10.000.000 Durchläufen ist die Verteilung auf die einzelnen Zahlen ungleichmäßig: Die Standardabweichung beträgt mindestens 0,3%, manchmal sogar über 1% (!!). Hierbei spielt es keine Rolle, ob nun eine Zufallszahl aus einem Bereich von zehn Zahlen oder hundert Zahlen erzeugt werden soll.<br />
Woran könnte das liegen?<br />
Mit solchen Abweichungen lässt sich’s wirklich nicht leben, Wahrscheinlichkeitsberechnungen sind nahezu ausgeschlossen.<br />
Hat jemand eine Idee, wie man eine wirklich echte Zufallszahlen erzeugen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146139/auch-double-rand-rand_max-erzeugt-keine-echten-zufallszahlen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 15:32:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146139.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 May 2006 14:45:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Auch  (double(rand())&#x2F;RAND_MAX)  erzeugt keine „echten“ Zufallszahlen on Thu, 04 May 2006 14:45:14 GMT]]></title><description><![CDATA[<p>Hallo,<br />
vielfach wird in den Fachbüchern behauptet, dass man mit (double(rand())/RAND_MAX) in Verbindung mit der Initialisierung srand(time(0)) „echte“ Zufallszahlen erhält.<br />
Dies kann ich leider nicht bestätigen. Selbst bei 10.000.000 Durchläufen ist die Verteilung auf die einzelnen Zahlen ungleichmäßig: Die Standardabweichung beträgt mindestens 0,3%, manchmal sogar über 1% (!!). Hierbei spielt es keine Rolle, ob nun eine Zufallszahl aus einem Bereich von zehn Zahlen oder hundert Zahlen erzeugt werden soll.<br />
Woran könnte das liegen?<br />
Mit solchen Abweichungen lässt sich’s wirklich nicht leben, Wahrscheinlichkeitsberechnungen sind nahezu ausgeschlossen.<br />
Hat jemand eine Idee, wie man eine wirklich echte Zufallszahlen erzeugen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050945</guid><dc:creator><![CDATA[Alexander Rahm]]></dc:creator><pubDate>Thu, 04 May 2006 14:45:14 GMT</pubDate></item><item><title><![CDATA[Reply to Auch  (double(rand())&#x2F;RAND_MAX)  erzeugt keine „echten“ Zufallszahlen on Thu, 04 May 2006 14:55:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Schau doch mal hier<br />
<a href="http://de.wikipedia.org/wiki/Physikalischer_Zufallszahlengenerator" rel="nofollow">http://de.wikipedia.org/wiki/Physikalischer_Zufallszahlengenerator</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050952</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 04 May 2006 14:55:02 GMT</pubDate></item><item><title><![CDATA[Reply to Auch  (double(rand())&#x2F;RAND_MAX)  erzeugt keine „echten“ Zufallszahlen on Thu, 04 May 2006 15:00:23 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Was meinst Du mit die Standardabweichung ist mindestens 0,3%? Was erwartest Du denn? Die Gleichverteilung hat auch ne Varianz (und damit ne Standardabweichung).</p>
<p>Oder meinst Du garnicht Standardabweichung, sondern daß die generierten Zahlen nicht absolut gleich verteilt sind? Das kann an mehreren Sachen liegen. Problematisch ist es zum Beispiel, wenn man mit modulo auf kleinere Zahlen geht:</p>
<p>Nehmen wir an, RAND_MAX wäre nur 3. Berechnen wir nun mit rand Zahlen von 0 bis 1, also rand()%2, dann ist die 0 doppelt so wahrscheinlich, wie die 1. Ähnliches kann natürlich auch bei großem RAND_MAX passieren.</p>
<p>Kannst Du vielleicht mal ein bißchen präziser beschreiben, was Du genau haben möchtest? Vielleicht gibt's ja doch nen einfachen Trick dafür. Sonst kannst Du auch mal bei boost (<a href="http://www.boost.org" rel="nofollow">www.boost.org</a>) vorbeischaun, die haben einige ganz nette Sachen zu Zufallszahlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050955</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 04 May 2006 15:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Auch  (double(rand())&#x2F;RAND_MAX)  erzeugt keine „echten“ Zufallszahlen on Fri, 05 May 2006 06:53:07 GMT]]></title><description><![CDATA[<p>Hallo Jester,<br />
wie ich schon geschrieben habe: ich meine nicht die Gleichverteilung (die ist okay), sondern die Standardabweichung, die für meine Begriffe ziemlich hoch ist (man bedenke das Verhältnis 10.000.000 Durchläufe und immer noch Abweichungen von bis zu 1%).<br />
Mit dem Modulooperator arbeite ich natürlich nicht, sondern mit der Formel (double(rand())/RAND_MAX)*n.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051204</guid><dc:creator><![CDATA[Alexander Rahm]]></dc:creator><pubDate>Fri, 05 May 2006 06:53:07 GMT</pubDate></item><item><title><![CDATA[Reply to Auch  (double(rand())&#x2F;RAND_MAX)  erzeugt keine „echten“ Zufallszahlen on Fri, 05 May 2006 07:00:54 GMT]]></title><description><![CDATA[<p>Was meinst du mit &quot;Standardabweichung&quot; genau? Bei einer gleichmäßigen Verteilung sollte diese doch eigentlich deutlich höher als 1% liegen, wenn mich die Überreste meiner Mathe-Kenntnisse nicht gerade im Stich lassen.</p>
<p>Und zeig doch mal den Code, mit dem du diese Berechnungen angestellt hast <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>(ein typischer Fehler im Umgang mit rand() ist, daß man den Zufallsgenerator zu oft initialisiert - srand() wird <strong>einmal</strong> bei Programmstart aufgerufen und danach nie wieder)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051212</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 May 2006 07:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to Auch  (double(rand())&#x2F;RAND_MAX)  erzeugt keine „echten“ Zufallszahlen on Fri, 05 May 2006 20:57:03 GMT]]></title><description><![CDATA[<p>Alexander Rahm schrieb:</p>
<blockquote>
<p>Hallo Jester,<br />
wie ich schon geschrieben habe: ich meine nicht die Gleichverteilung (die ist okay), sondern die Standardabweichung, die für meine Begriffe ziemlich hoch ist (man bedenke das Verhältnis 10.000.000 Durchläufe und immer noch Abweichungen von bis zu 1%).<br />
Mit dem Modulooperator arbeite ich natürlich nicht, sondern mit der Formel (double(rand())/RAND_MAX)*n.</p>
</blockquote>
<p>Die Frage ist wieviel Zahlen du benutzt, also was ist n bei dir? Bei mir ist die Abweichung nicht so hoch. Trotzdem sind andere Libs, z.B. Boost besser. Beispiel:</p>
<p>Oben - Boost-C++-Library<br />
Unten - C-Standard-Library</p>
<pre><code>Durchlaeufe: 500000000
Zeit: 41 Sekunden
Zahlen: 10
     0:  10.001%
     1:  10.001%
     2:   9.999%
     3:   9.999%
     4:  10.000%
     5:  10.001%
     6:  10.000%
     7:  10.000%
     8:  10.000%
     9:   9.998%

Durchlaeufe: 500000000
Zeit: 50 Sekunden
Zahlen: 10
     0:  10.000%
     1:  10.003%
     2:  10.001%
     3:   9.996%
     4:   9.999%
     5:  10.002%
     6:   9.998%
     7:   9.999%
     8:  10.002%
     9:   9.997%
</code></pre>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051821</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Fri, 05 May 2006 20:57:03 GMT</pubDate></item></channel></rss>