<?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 zwischen 1 und 500000]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>Ich habe ein Problem mit Zufallszahlen.<br />
Ich habe einen Vektor, der von einer Datei mit Wörter versorgt wird.<br />
Momentan sind es um die 500.000 Stück.</p>
<p>Diese sollen im Rahmen eines Spiels zufällig gezogen und ausgegeben werden.</p>
<p>Ich habe nun ein Problem mit den Zufallszahlen.<br />
Ich habe folgendes versucht:</p>
<pre><code>zufallszahl = min+(rand() % (vektor.size()-min));
</code></pre>
<p>Leider werden die Zahlen nie größer als 32000.</p>
<p>Bis 36000 habe ich noch Wörter mit A. D.h. ich komme nie auf Wörter, die mit B oder anderen Buchstaben anfangen, weil meine Zufallszahl einfach zu klein ist, bzw. nicht weit genug streut.</p>
<p>Auch eine Ausgabe direkt funktioniert nicht.</p>
<pre><code>cout &lt;&lt; i+1 &lt;&lt;&quot;. Zufallswort: &quot; &lt;&lt; init::karten[rand() % init::karten.size()] &lt;&lt; endl;
</code></pre>
<p>Auch diese Referenz: <a href="http://www.cplusplus.com/reference/random/" rel="nofollow">http://www.cplusplus.com/reference/random/</a> kenn ich, leider komme ich dort nicht weiter.</p>
<p>Dort habe ich auch das gefunden:<br />
<a href="http://www.cplusplus.com/reference/random/random_device/max/" rel="nofollow">http://www.cplusplus.com/reference/random/random_device/max/</a></p>
<p>Ich verstehe jedoch nicht, wie ich max auf eine Zahl setzen kann, damit diese nicht überschritten wird.<br />
Ich habe dort schon eine Funktion gefunden, diese Zahlen übersteigen die 500.000 aber deutlich, so dass mein Vektor direkt out of range ist und das Programm abstürzt.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312939/zufallszahlen-zwischen-1-und-500000</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 12:02:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312939.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Jan 2013 18:43:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Thu, 17 Jan 2013 18:43:52 GMT]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>Ich habe ein Problem mit Zufallszahlen.<br />
Ich habe einen Vektor, der von einer Datei mit Wörter versorgt wird.<br />
Momentan sind es um die 500.000 Stück.</p>
<p>Diese sollen im Rahmen eines Spiels zufällig gezogen und ausgegeben werden.</p>
<p>Ich habe nun ein Problem mit den Zufallszahlen.<br />
Ich habe folgendes versucht:</p>
<pre><code>zufallszahl = min+(rand() % (vektor.size()-min));
</code></pre>
<p>Leider werden die Zahlen nie größer als 32000.</p>
<p>Bis 36000 habe ich noch Wörter mit A. D.h. ich komme nie auf Wörter, die mit B oder anderen Buchstaben anfangen, weil meine Zufallszahl einfach zu klein ist, bzw. nicht weit genug streut.</p>
<p>Auch eine Ausgabe direkt funktioniert nicht.</p>
<pre><code>cout &lt;&lt; i+1 &lt;&lt;&quot;. Zufallswort: &quot; &lt;&lt; init::karten[rand() % init::karten.size()] &lt;&lt; endl;
</code></pre>
<p>Auch diese Referenz: <a href="http://www.cplusplus.com/reference/random/" rel="nofollow">http://www.cplusplus.com/reference/random/</a> kenn ich, leider komme ich dort nicht weiter.</p>
<p>Dort habe ich auch das gefunden:<br />
<a href="http://www.cplusplus.com/reference/random/random_device/max/" rel="nofollow">http://www.cplusplus.com/reference/random/random_device/max/</a></p>
<p>Ich verstehe jedoch nicht, wie ich max auf eine Zahl setzen kann, damit diese nicht überschritten wird.<br />
Ich habe dort schon eine Funktion gefunden, diese Zahlen übersteigen die 500.000 aber deutlich, so dass mein Vektor direkt out of range ist und das Programm abstürzt.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290783</guid><dc:creator><![CDATA[Shizophren]]></dc:creator><pubDate>Thu, 17 Jan 2013 18:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Thu, 17 Jan 2013 18:46:14 GMT]]></title><description><![CDATA[<p>Nimm einfach sowas wie mt19937_64 und seede mit random_device. <a href="http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution" rel="nofollow">http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290784</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 17 Jan 2013 18:46:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Thu, 17 Jan 2013 18:53:01 GMT]]></title><description><![CDATA[<p>Ich schätze, dein vector hat einfach nicht so viele Elemente, wie du denkst. Gib doch beim Erzeugen jeder Zufallszahl mal vektor.size() mit aus.</p>
<p>EDIT:<br />
<a href="http://ideone.com/YNqC7Q" rel="nofollow">http://ideone.com/YNqC7Q</a> (Ausgabe bei mit mit dem ersten Versuch: 489898)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290785</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Thu, 17 Jan 2013 18:53:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Thu, 17 Jan 2013 18:54:29 GMT]]></title><description><![CDATA[<p>@ _matze</p>
<p>Also mein Vektor hat soviele Elemente <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /><br />
Die Liste ist ja auch wirklich 500000 Wörter groß.<br />
Lasse mir im Programm auch mit.</p>
<p>Danke, werde ich auch versuchen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<pre><code>init::karten.size();
</code></pre>
<p>die Größe meines Vektors ausgeben. Der ist aktuell bei 530011 Wörtern. Das sehe ich aber auch in meiner .dic Datei.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25760">@cooky451</a></p>
<p>Ich werde es mal testen. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290788</guid><dc:creator><![CDATA[Shizophren]]></dc:creator><pubDate>Thu, 17 Jan 2013 18:54:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Thu, 17 Jan 2013 18:54:44 GMT]]></title><description><![CDATA[<p>Welchen Typ hat zufallszahl denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290790</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Thu, 17 Jan 2013 18:54:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Thu, 17 Jan 2013 20:11:54 GMT]]></title><description><![CDATA[<p>Shizophren schrieb:</p>
<blockquote>
<p>Leider werden die Zahlen nie größer als 32000.</p>
</blockquote>
<p>Viele (ältere) rand()s sind zwischen 0 und 32767.<br />
Also 15 Bits.<br />
Kannst das beheben mit zwei rand()-Aufrufen.</p>
<pre><code>int bigRand(){
   return (rand()&lt;&lt;15)|rand();
}
</code></pre>
<p>Das schiebt die 15 Bits des ersten rand()-Aufrufs um 15 Bits nach &lt;- und tut dann noch mit | hinten noch 15 zufällige Bits mit noch einem rand()-Aufruf dran.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290809</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 17 Jan 2013 20:11:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Thu, 17 Jan 2013 21:55:13 GMT]]></title><link>https://www.c-plusplus.net/forum/post/2290846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290846</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 17 Jan 2013 21:55:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Fri, 18 Jan 2013 03:28:47 GMT]]></title><description><![CDATA[<p>Shizophren schrieb:</p>
<blockquote>
<p>Auch diese Referenz: <a href="http://www.cplusplus.com/reference/random/" rel="nofollow">http://www.cplusplus.com/reference/random/</a> kenn ich, leider komme ich dort nicht weiter.</p>
</blockquote>
<p>Dort steht doch schon ein Beispiel das nur noch minimal modifiziert werden muss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<blockquote>
<pre><code class="language-cpp">std::default_random_engine generator;
std::uniform_int_distribution&lt;int&gt; distribution(1,6);
int dice_roll = distribution(generator);  // generates number in the range 1..6
</code></pre>
</blockquote>
<blockquote>
<p>Dort habe ich auch das gefunden:<br />
<a href="http://www.cplusplus.com/reference/random/random_device/max/" rel="nofollow">http://www.cplusplus.com/reference/random/random_device/max/</a></p>
</blockquote>
<p>Das Random Device ist nicht wirklich als RNG geeignet. Das spuckt zwar mehr oder weniger &quot;echte&quot; Zufallszahlen aus, aber dafür sind die nicht notwendigerweise gleichverteilt oder sonstwie mathematisch/statistisch betrachtet besonders &quot;gut&quot;.</p>
<blockquote>
<p>Ich verstehe jedoch nicht, wie ich max auf eine Zahl setzen kann, damit diese nicht überschritten wird.</p>
</blockquote>
<p>Kannst du gar nicht. Erstmal ist ein Random Device wie schon gesagt eh nicht fit als RNG, und zweitens gibt es zum &quot;Eingrenzen&quot; der Zufallszahlen eben die Distributions.<br />
Die <code>min()</code> und <code>max()</code> Funktionen des Random-Device ist nur dazu da damit man den minimalen/maximalen Wert <em>abfragen</em> kann den das Device produzieren kann/wird.</p>
<p>Fertiges Beispiel:</p>
<pre><code class="language-cpp">#include &lt;random&gt;
#include &lt;array&gt;

int main()
{ 
	typedef std::mt19937 my_rng_engine; // Die Engine die wir verwenden wollen
	typedef std::random_device my_seed_device; // Das Device das wir zum Seeden der Engine verwenden wollen
	typedef std::uniform_int_distribution&lt;size_t&gt; uniform_size_t_distribution; // Die distribution die wir verwenden wollen

	// Seed Sequence erzeugen
	my_seed_device seed_device;
	std::array&lt;my_seed_device::result_type, 4&gt; seed_numbers = { seed_device(), seed_device(), seed_device(), seed_device() };
	std::seed_seq seed(seed_numbers.begin(), seed_numbers.end());

	// Generator erzeugen &amp; gleichzeitig seeden
	my_rng_engine engine(seed);

	// Distribution erzeugen
	uniform_size_t_distribution dist(0, 500000);

	// Zahlen ziehen
	for (size_t i = 0; i &lt; 10; i++)
		std::cout &lt;&lt; dist(engine) &lt;&lt; &quot;\n&quot;;

	return 0; 
}
</code></pre>
<p>Das Erzeugen der Seed-Sequenze geht wesentlich eleganter mit 'ner Initializer-List, aber da ich VC11 verwende (der die noch nicht &quot;kann&quot;)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290874</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 18 Jan 2013 03:28:47 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Fri, 18 Jan 2013 09:04:10 GMT]]></title><description><![CDATA[<p>Vielen Dank euch allen!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a> das hat geholfen <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="👍"
    /> Vielen Dank für die ausführliche Antwort.<br />
Fürs nächste mal weiß ich wie es geht.<br />
Nicht gerade &quot;unkompliziert&quot; für ein paar Zufallszahlen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290911</guid><dc:creator><![CDATA[Shizophren]]></dc:creator><pubDate>Fri, 18 Jan 2013 09:04:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Fri, 18 Jan 2013 09:12:43 GMT]]></title><description><![CDATA[<p>Doch, eigentlich ists nicht sehr schwer. Und es hat alles was man braucht.</p>
<p>Mit rand() hat man früehr dann noch irgendwelche ranges drumgebastelt, oder man musste sich wie SeppJ beschrieben hat, ein &quot;BigRand()&quot; bauen. Und das ist ja keine Zauberkunst, sondern nur so Standardkram, der sich nicht ändert.</p>
<p>Die STL hat das ein bisschen verallgemeinert (wies auch sein muss).</p>
<p>Aber ich gebe zu, mich schreckt das auchw as ab <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="😉"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2290916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290916</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 18 Jan 2013 09:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Fri, 18 Jan 2013 09:14:16 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>SeppJ</p>
</blockquote>
<p>Sicher?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290917</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 18 Jan 2013 09:14:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen zwischen 1 und 500000 on Fri, 18 Jan 2013 09:28:12 GMT]]></title><description><![CDATA[<p>Für mich seid ihr beide göttergleich...<br />
Aber du hast Recht, du hast dich bei dem post mit deinem Namen verschrieben und hast als Pseudonym 'volkard' benutzt... <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="😉"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2290921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290921</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 18 Jan 2013 09:28:12 GMT</pubDate></item></channel></rss>