<?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[Zufallsgenerator, Code-Frage...]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hatte so eine kleine Idee für ein Rollenspiel und hab mir Gedanken für einen Kampfablauf gemacht.<br />
Der Code sieht folgendermaßen aus:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;windows.h&gt;
using namespace std;

int main()
{

    int hp=100;

    kampf:
    int min=7,max=25,dmg;
    while (hp &gt; 0)

    {
    srand(time(NULL));
    dmg=min + rand()%(max-min+1);
    Sleep(2000);
    cout &lt;&lt; &quot;Mensch trifft dich fuer: &quot; &lt;&lt; dmg &lt;&lt;&quot; Schaden.&quot; &lt;&lt; endl;
    hp=hp-dmg;
    Sleep(850);
    cout &lt;&lt; &quot;Du hast noch &quot; &lt;&lt; hp &lt;&lt; &quot; Gesundheitspunkte.&quot; &lt;&lt; endl &lt;&lt; endl;
    Sleep(1500);
    cout &lt;&lt; &quot;Der Mensch holt zum naechsten Schlag aus.&quot; &lt;&lt; endl &lt;&lt; endl;

    goto kampf;

    }
    system(&quot;CLS&quot;);
    cout &lt;&lt; &quot;Du bist Tot!&quot; &lt;&lt; endl;
}
</code></pre>
<p>Das Programm funktioniert auch mitlerweile.</p>
<p>Aber ich hatte folgendes Problem:</p>
<p>Ich hatte am Anfang keinen Sleep Befehl.<br />
Dadurch wurde der gesamte Kampf ohne Verzögerung angezeigt.<br />
Aber komischerweise hatte das Programm jedes mal den gleichen Schadenswert ausgegeben. Aber eigendlich müsste der doch jedes mal die Zahl wegen der Schleife zufallsgenerieren??!!!<br />
Erst als ich einen Sleep Befehl nach der Zufallsberechnung einfügte hats funktioniert.</p>
<p>Wie kommt das?</p>
<p>Die anderen Sleep Befehle hab ich aus Stylegründen noch eingefügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212972/zufallsgenerator-code-frage</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 14:12:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212972.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 May 2008 20:52:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zufallsgenerator, Code-Frage... on Mon, 12 May 2008 20:52:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hatte so eine kleine Idee für ein Rollenspiel und hab mir Gedanken für einen Kampfablauf gemacht.<br />
Der Code sieht folgendermaßen aus:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;windows.h&gt;
using namespace std;

int main()
{

    int hp=100;

    kampf:
    int min=7,max=25,dmg;
    while (hp &gt; 0)

    {
    srand(time(NULL));
    dmg=min + rand()%(max-min+1);
    Sleep(2000);
    cout &lt;&lt; &quot;Mensch trifft dich fuer: &quot; &lt;&lt; dmg &lt;&lt;&quot; Schaden.&quot; &lt;&lt; endl;
    hp=hp-dmg;
    Sleep(850);
    cout &lt;&lt; &quot;Du hast noch &quot; &lt;&lt; hp &lt;&lt; &quot; Gesundheitspunkte.&quot; &lt;&lt; endl &lt;&lt; endl;
    Sleep(1500);
    cout &lt;&lt; &quot;Der Mensch holt zum naechsten Schlag aus.&quot; &lt;&lt; endl &lt;&lt; endl;

    goto kampf;

    }
    system(&quot;CLS&quot;);
    cout &lt;&lt; &quot;Du bist Tot!&quot; &lt;&lt; endl;
}
</code></pre>
<p>Das Programm funktioniert auch mitlerweile.</p>
<p>Aber ich hatte folgendes Problem:</p>
<p>Ich hatte am Anfang keinen Sleep Befehl.<br />
Dadurch wurde der gesamte Kampf ohne Verzögerung angezeigt.<br />
Aber komischerweise hatte das Programm jedes mal den gleichen Schadenswert ausgegeben. Aber eigendlich müsste der doch jedes mal die Zahl wegen der Schleife zufallsgenerieren??!!!<br />
Erst als ich einen Sleep Befehl nach der Zufallsberechnung einfügte hats funktioniert.</p>
<p>Wie kommt das?</p>
<p>Die anderen Sleep Befehle hab ich aus Stylegründen noch eingefügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507753</guid><dc:creator><![CDATA[Deuterum]]></dc:creator><pubDate>Mon, 12 May 2008 20:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallsgenerator, Code-Frage... on Mon, 12 May 2008 20:58:49 GMT]]></title><description><![CDATA[<p>srand() nur einmal pro Programmdurchlauf aufrufen <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>«Zufall» ist nur eine funktion auf den per srand() übergebenen wert. Wenn du die sleeps nicht hast läuft das ganze so schnell, dass du srand() immer den gleichen wert übergibts -&gt; es kommen bei jedem durchlauf die gleichen ergebnisse 'raus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507758</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Mon, 12 May 2008 20:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallsgenerator, Code-Frage... on Mon, 12 May 2008 20:59:00 GMT]]></title><description><![CDATA[<p>Das liegt daran, dass du srand() in der Schleife aufrufst.<br />
srand() hast du ja mit der aktuellen Zeit, also mit time(NULL) initialisiert. Daher ist die Schleife so schnell durchgelaufen, und nochmal von vorne angegangen, dass mit time() srand auf genau den selben Wert wie in der vorherigen Runde gesetzt wurde, da ja noch keine (im Bereich von time()) messbare Zeit vergangen ist.</p>
<p>Lösung:</p>
<p>Am besten srand() nur EINMAL außerhalb der Schleife aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507759</guid><dc:creator><![CDATA[asd09]]></dc:creator><pubDate>Mon, 12 May 2008 20:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallsgenerator, Code-Frage... on Mon, 12 May 2008 21:01:11 GMT]]></title><description><![CDATA[<p>srand() darf oder sollte nur einmal im Programm aufgerufen werden.</p>
<p>srand initialisiert den Zufallszahlengenerator mit dem übergebenen Wert. da du ihn aber mit time(null) initialisierst und time die zeit in sekunden wieder gibt, wird bei jedem Schleifendurchlauf der Zeichendurchlauf mit demselben Wert initialisiert wie im Schleifendurchlauf davor.</p>
<p>also: srand an den Anfang der main(). und über das goto in deinem Code reden wir am besten nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507761</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 12 May 2008 21:01:11 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallsgenerator, Code-Frage... on Mon, 12 May 2008 21:19:16 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>und über das goto in deinem Code reden wir am besten nicht.</p>
</blockquote>
<p>Warum nicht? <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>
<p>Naja ich bin noch blutiger Anfänger, ich hab erst vor ein paar Tagen angefangen mit C++ .</p>
<p>Aber Danke für die Antworten, jetzt weis ich bescheid!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507768</guid><dc:creator><![CDATA[Deuterum]]></dc:creator><pubDate>Mon, 12 May 2008 21:19:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zufallsgenerator, Code-Frage... on Mon, 12 May 2008 22:56:58 GMT]]></title><description><![CDATA[<p>huh wenn du gotos in deinem code hast dann ist das unter programmieren ungefähr so rüber als wenn du eine schublade voller bilder von halbnackten kindern hättest und bei der hälfte sind die augen ausgeschnitten</p>
<p>es ist ungefähr so verschrien <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>
<p>und ja, in 999/1000 fällen ist es die eindeutig schlechtere alternative zu anderen lösungen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507805</guid><dc:creator><![CDATA[Vevusio]]></dc:creator><pubDate>Mon, 12 May 2008 22:56:58 GMT</pubDate></item></channel></rss>