<?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 - mit Begrenzung - Suche half nicht]]></title><description><![CDATA[<p>Hallo liebe C++ler,<br />
ich brauche für eine auf AD&amp;D basierendes Rollenspiel ständig Zufallszahlen und zwar mit variierenden Maximalwerten. Allerdings sollen sehr oft Werte zwischen 1 und 10 erwürfelt werden. Das ist auch erst einmal mein Hauptaugenmerk. Mit folgendem Programm, das ich teils aus diesem Forum, teils aus der MS C++ Doku habe, passiert es unwahrscheinlich oft, das ich eine gleiche Zufallszahl erwürfle. Was mache ich falsch? Und welche Bibliotheken brauche ich dafür wirklich? Liegt es an der srand Initialisierung? LG Tobi</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;time.h&gt;

void main(void)
{
	srand( (unsigned)time( NULL ) );
	int zufallszahl;
	zufallszahl = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
	cout &lt;&lt; zufallszahl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/161143/zufallszahlen-mit-begrenzung-suche-half-nicht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 22:54:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161143.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Oct 2006 20:15:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zufallszahlen - mit Begrenzung - Suche half nicht on Tue, 03 Oct 2006 20:15:41 GMT]]></title><description><![CDATA[<p>Hallo liebe C++ler,<br />
ich brauche für eine auf AD&amp;D basierendes Rollenspiel ständig Zufallszahlen und zwar mit variierenden Maximalwerten. Allerdings sollen sehr oft Werte zwischen 1 und 10 erwürfelt werden. Das ist auch erst einmal mein Hauptaugenmerk. Mit folgendem Programm, das ich teils aus diesem Forum, teils aus der MS C++ Doku habe, passiert es unwahrscheinlich oft, das ich eine gleiche Zufallszahl erwürfle. Was mache ich falsch? Und welche Bibliotheken brauche ich dafür wirklich? Liegt es an der srand Initialisierung? LG Tobi</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;time.h&gt;

void main(void)
{
	srand( (unsigned)time( NULL ) );
	int zufallszahl;
	zufallszahl = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
	cout &lt;&lt; zufallszahl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1148889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148889</guid><dc:creator><![CDATA[Tobi86]]></dc:creator><pubDate>Tue, 03 Oct 2006 20:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen - mit Begrenzung - Suche half nicht on Tue, 03 Oct 2006 20:23:42 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">zufallszahl = (rand () % 10) + 1;
</code></pre>
<p>Das hat eine ordentliche Verteilung und ist unabhängig von float Rundungsfehlern. Wenns zufälliger sein soll, dann benutz <a href="http://www.boost.org/libs/random" rel="nofollow">Boost.Random</a>.</p>
<p>/edit: stdio und iostream in einem Programm macht keinen Sinn.<br />
/edit2:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;

int main()
{
    std::srand (std::time (0));
    int zufallszahl = std::rand () % 10 + 1;
    std::cout &lt;&lt; zufallszahl &lt;&lt; std::endl;
}
</code></pre>
<p>.. so, jetzt fühl ich mich besser :p <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/1148893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148893</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 03 Oct 2006 20:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen - mit Begrenzung - Suche half nicht on Wed, 04 Oct 2006 06:07:37 GMT]]></title><description><![CDATA[<p>Schonwieder mit Modulo? Tobi86 Ansatz war durchaus besser! <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/1148973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148973</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 04 Oct 2006 06:07:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen - mit Begrenzung - Suche half nicht on Wed, 04 Oct 2006 14:56:05 GMT]]></title><description><![CDATA[<p>Objektiv mit Sicherheit, aber da dieser Ansatz scheinbar nicht ordentlich funktioniert, hätte er die Alternative testen können. Am angebrachtesten ist und bleibt die Benutzung eines besseren Zufallszahlenverfahrens.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149325</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 04 Oct 2006 14:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen - mit Begrenzung - Suche half nicht on Sun, 08 Oct 2006 21:26:27 GMT]]></title><description><![CDATA[<p>Hallo und guten Abend nochmal!<br />
Ich danke Dir, .filmor, aber irgendwie ist mir die Generierung immer noch nicht ganz geheuer... <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 />
Ich habe die boost-Seite besucht, muss aber ehrlich sagen, dass ich als C++-Noobie total überfordert bin. Auch habe ich in Englisch kein Oxford-Abzeichen.<br />
Kann mir also nochmal jemand helfen, an besseren Code für Zufallszahlen heranzukommen? Das was ich von boost.random verstanden habe, klang sehr interessant, aber, was mich vor allem verwirrte war die Tatsache, das es wohl sehr viele Methoden gibt ZZ zu generieren. Welchen Code muss ich mir nun besorgen und welche Header-Datei muss ich mir laden?<br />
Ich wäre für eure Hilfe sehr dankbar.<br />
LG<br />
Tobi <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>
<p>EDIT: achja, ums nochmal hervorzuheben: es geht mir vor allem nur um <strong>ganzzahlige</strong> Zufallszahlen im maximal <strong>2stelligen</strong> Bereich.<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151685</guid><dc:creator><![CDATA[Tobi86]]></dc:creator><pubDate>Sun, 08 Oct 2006 21:26:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallszahlen - mit Begrenzung - Suche half nicht on Sun, 08 Oct 2006 21:34:15 GMT]]></title><description><![CDATA[<p>Das schwierigste wird wohl das einrichten von Boost sein.</p>
<p>Ich hatte mir das mal vor einiger Zeit angeschaut, und hier ist ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iomanip&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;boost/random/linear_congruential.hpp&gt;
#include &lt;boost/random/mersenne_twister.hpp&gt;
using namespace std;

class RandomNumber {
    private:
        boost::rand48 r;
    public:
        RandomNumber() {
            r.seed(static_cast&lt;int&gt;(time(0)));
        }

        int operator() (int n) {
            return static_cast&lt;int&gt;(
                static_cast&lt;unsigned long long&gt;(n) * r() / std::numeric_limits&lt;int&gt;::max()
            );
        }
};

class CRandomNumber {
    public:
        CRandomNumber() {
            srand(time(0));
        }

        int operator() (int n) {
            return static_cast&lt;int&gt;(
                static_cast&lt;unsigned long long&gt;(n) * rand() / RAND_MAX
            );
        }
};

template&lt;class T&gt;
void TestRandom(T functor) {
    const int numbers = 10;
    const int times = 50000000;
    std::cout &lt;&lt; &quot;Durchlaeufe: &quot; &lt;&lt; times &lt;&lt; std::endl;

    int arr[numbers];
    memset(arr, 0, sizeof(arr));
    unsigned long long prozent = 0, prozentAlt = -1;
    time_t start = time(0);
    for(int i = 0; i &lt; times; ++i) {
        prozent = static_cast&lt;unsigned long long&gt;(i) * 100 / times;
        if(prozent != prozentAlt) {
            cout &lt;&lt; &quot;\r&quot; &lt;&lt; setw(2) &lt;&lt; (prozentAlt = prozent) &lt;&lt; &quot;%&quot;;
        }
        ++arr[functor(numbers)];
    }
    std::cout &lt;&lt; &quot;\r&quot; &lt;&lt;
    &quot;Zeit: &quot; &lt;&lt; (time(0) - start) &lt;&lt; &quot; Sekunden&quot; &lt;&lt; std::endl &lt;&lt;
    &quot;Zahlen: &quot; &lt;&lt; numbers &lt;&lt; std::endl;
    for(int i = 0; i &lt; numbers; ++i) {
        std::cout &lt;&lt; setw(6) &lt;&lt; i &lt;&lt; &quot;: &quot; &lt;&lt; setw(7) &lt;&lt; fixed &lt;&lt; setprecision(3) &lt;&lt;
        arr[i] * 100. / times &lt;&lt; &quot;%&quot; &lt;&lt; std::endl;
    }
    std::cout &lt;&lt; std::endl &lt;&lt; std::endl;
}

int main() {
    using namespace std;

    TestRandom(RandomNumber());
    TestRandom(CRandomNumber());
}
</code></pre>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151706</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 08 Oct 2006 21:34:15 GMT</pubDate></item></channel></rss>