<?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[zufallszahlen]]></title><description><![CDATA[<p>Hi, ich will double Zufallszahlen erstellen. In folgendem beispiel sollen zufallszahlen zwischen 0 und r generiert werden, wobei r ersteinmal ein integer sein soll.</p>
<pre><code class="language-cpp">#include &lt;ctime&gt; 
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
using namespace std;

int main() {
	double x;
	int r;
	cin &gt;&gt; r;

	srand(time(0)); 
	x=((rand()%r)+1)*(rand()/RAND_MAX); 
/* (rand()%r)+1) ist integer streckungsfaktor zwischen 1 und r.
Das(rand()/RAND_MAX) soll eine Zahl zwischen 0 und 1 werden. 
Ich habe das ganze in 2 faktoren aufgeteilt damit ich mehr verschiedene zufalls doubles habe (RAND_MAX für jede einheit). */
	cout &lt;&lt; x; 
	system(&quot;Pause&quot;);
	return 0;
}
</code></pre>
<p>Das Problem ist dass ich immer x = 0 bekomme wieso?</p>
<p>Eine weitere sache die mir nicht gefällt ist dass RAND_MAX so gering ist mit 7fff (32767).<br />
Wenn ich nun z.b. r = 15000 wähle gibt es 3 möglichkeiten 1 zu bekommen (1%15000, 15001%15000, 30001%15000)<br />
aber z.b. nur 2 möglichkeit für 14999 (14999%15000, 29999%15000), wenn eine zahl deutlich warscheinlicher ist als eine andere ist das nicht mehr zufällig...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285629/zufallszahlen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 06:03:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285629.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Apr 2011 22:51:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to zufallszahlen on Sun, 24 Apr 2011 22:53:15 GMT]]></title><description><![CDATA[<p>Hi, ich will double Zufallszahlen erstellen. In folgendem beispiel sollen zufallszahlen zwischen 0 und r generiert werden, wobei r ersteinmal ein integer sein soll.</p>
<pre><code class="language-cpp">#include &lt;ctime&gt; 
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
using namespace std;

int main() {
	double x;
	int r;
	cin &gt;&gt; r;

	srand(time(0)); 
	x=((rand()%r)+1)*(rand()/RAND_MAX); 
/* (rand()%r)+1) ist integer streckungsfaktor zwischen 1 und r.
Das(rand()/RAND_MAX) soll eine Zahl zwischen 0 und 1 werden. 
Ich habe das ganze in 2 faktoren aufgeteilt damit ich mehr verschiedene zufalls doubles habe (RAND_MAX für jede einheit). */
	cout &lt;&lt; x; 
	system(&quot;Pause&quot;);
	return 0;
}
</code></pre>
<p>Das Problem ist dass ich immer x = 0 bekomme wieso?</p>
<p>Eine weitere sache die mir nicht gefällt ist dass RAND_MAX so gering ist mit 7fff (32767).<br />
Wenn ich nun z.b. r = 15000 wähle gibt es 3 möglichkeiten 1 zu bekommen (1%15000, 15001%15000, 30001%15000)<br />
aber z.b. nur 2 möglichkeit für 14999 (14999%15000, 29999%15000), wenn eine zahl deutlich warscheinlicher ist als eine andere ist das nicht mehr zufällig...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2053768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053768</guid><dc:creator><![CDATA[Halozination]]></dc:creator><pubDate>Sun, 24 Apr 2011 22:53:15 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Sun, 24 Apr 2011 22:59:48 GMT]]></title><description><![CDATA[<p>In deiner Formel kommen nur int-Werte vor, also verwendet der Compiler dort Ganzahl-Arithmetik - und der (Teil)Ausdruck <code>rand()/RAND_MAX</code> ist immer null. Eine Lösung wäre es, einen der Teile in einen double zu casten.</p>
<p>Ansonsten ist deine Skalierung nicht nur falsch, sondern auch sinnlos - ich würde den Wert eher per <code>(rand()*r)/RAND_MAX</code> berechnen (das löst auch das Divisionsproblem).</p>
<p>PS: Im Magazin gibt es einen Artikel über Zufallszahlen, der für dich interessant werden könnte <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/2053773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053773</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 24 Apr 2011 22:59:48 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Sun, 24 Apr 2011 23:02:16 GMT]]></title><description><![CDATA[<p>Nebenbei hat deine Skalierung den Nachteil, dass Werte nahe r nur sehr selten generiert werden, während sehr kleine Werte wesentlich häufiger sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2053775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053775</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 24 Apr 2011 23:02:16 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Sun, 24 Apr 2011 23:16:04 GMT]]></title><description><![CDATA[<p>ok mal wieder vergessen zu casten, ich glaube das lerne ich nie.</p>
<p>edit- nvm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2053779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053779</guid><dc:creator><![CDATA[Halozination]]></dc:creator><pubDate>Sun, 24 Apr 2011 23:16:04 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Sun, 24 Apr 2011 23:15:47 GMT]]></title><description><![CDATA[<p>oh ich sehe nun was ihr meint. ty für die hilfe. werde mal den artikel suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2053783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053783</guid><dc:creator><![CDATA[Halozination]]></dc:creator><pubDate>Sun, 24 Apr 2011 23:15:47 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Sun, 24 Apr 2011 23:18:02 GMT]]></title><description><![CDATA[<p>Wie otze schon sagte, bekommst du mit deiner Konstruktion keine gleichmäßige Verteilung hin. Und der Trick an der Alternative besteht darin, daß man weiter oben <code>double r;</code> definieren sollte - dadurch verwendet der Compiler dann Gleitkomma-Arithmetik und du erhältst auch Werte mit Nachkommastellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2053784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053784</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 24 Apr 2011 23:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Mon, 25 Apr 2011 02:41:40 GMT]]></title><description><![CDATA[<p>Wenn du hochwertige Zufallszahlen brauchst, ist <a href="http://www.boost.org/doc/libs/1_46_1/doc/html/boost_random.html" rel="nofollow">Boost.Random</a> eine gute Wahl. Std::rand() ist üblicherweise nur ein einfacher, linearer Kongruenzgenerator - ausreichend, wenn es im Wesentlichen darum geht, dass der Benutzer sein Ergebnis nicht vorhersehen können soll, aber suboptimal für Simulationen und Ähnliches (deine Bemerkung über nicht mehr echte Zufälligkeit lässt mich etwas in der Richtung vermuten). Geht es gar um Kryptographie, solltest du dich an entsprechende Schnittstellen deines Betriebssystems wenden; unter UNIX /dev/random, unter Windows weiß ich das aus dem Stand nicht.</p>
<p>Allerdings ist mir std::rand() mit 16 Bit effektiver Breite schon länger nicht mehr untergekommen. Welchen Compiler verwendest du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2053795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053795</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Mon, 25 Apr 2011 02:41:40 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Mon, 25 Apr 2011 08:36:56 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Allerdings ist mir std::rand() mit 16 Bit effektiver Breite schon länger nicht mehr untergekommen. Welchen Compiler verwendest du?</p>
</blockquote>
<p>Das hatten wir vor einem Monat schon einmal. Finde leider den konkreten Thread nicht, aber ich hatte damals ebenfalls versäumt, nach dem Compiler/Standardbibliothek zu fragen. Jedenfalls geistert wohl irgendwo da draußen tatsächlich eine Implementierung mit einem 16-Bit rand() herum und diese Implementierung ist verbreitet genug, um schon mehrmals hier im Forum aufzutauchen.</p>
<p>Wobei es natürlich im Prinzip total egal ist, wieviele zufällige Bits ein RNG pro Ziehung liefert. Hauptsache sie sind gut zufällig und die Rate von zufälligen Bits pro Zeit ist akzeptabel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2053829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053829</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 25 Apr 2011 08:36:56 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Mon, 25 Apr 2011 09:58:19 GMT]]></title><description><![CDATA[<p>Halozination schrieb:</p>
<blockquote>
<p>...<br />
wenn eine zahl deutlich warscheinlicher ist als eine andere ist das nicht mehr zufällig...</p>
</blockquote>
<p>Zum einen sind die erzeugten Zahlen nie zufällig, dass basiert immer auf festen Berechnungsalgorithmen.</p>
<p>Und des weiteren sind Zufallszahlen, wo manche Zahlen öfters vorkommen als andere trotzdem zufällig, nur die Verteilung ist anders.<br />
z.B. Betrachte mal einen Zufallsversuchs, etwa das Werfen eines idealen Würfels. Dann tritt jede Zahl 1 bis 6 gleich häufig auf. Ändert man nun aber die Spielregeln und nimmt 2 Würfel und addiert die Augenzahlen, so erhält man auf einmal, dass ein Ergebnis um die 7 wahrscheinlicher ist, als etwa die 12. (Es gibt nur eine Möglichkeit die 12 zu erhalten, nämlich als 6+6, für die 7 gibt es aber 6 Möglichkeiten: 1+6, 2+5, 3+4, 4+3, 5+2, 6+1)<br />
Trotzdem ist das Ergebnis zufällig, nur ist eben die Verteilung anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2053867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2053867</guid><dc:creator><![CDATA[bmario]]></dc:creator><pubDate>Mon, 25 Apr 2011 09:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to zufallszahlen on Mon, 25 Apr 2011 14:20:15 GMT]]></title><description><![CDATA[<p>MinGW hat beispielsweise so ein 16-Bit rand().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054009</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 25 Apr 2011 14:20:15 GMT</pubDate></item></channel></rss>