<?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[Zufalls Funktion]]></title><description><![CDATA[<p>Ich wollte meine Zufalls Funktion verbessern, sodass nie zweimal der gleiche Zufall ist bzw. die gleiche Zahl:</p>
<pre><code class="language-cpp">long rnd(long a,long b)
{
    int Zufall=(rand() % (b-a+1)) + a;
    int *temp=new int;
    if (*temp!=Zufall)
    {
        *temp=Zufall;
        return Zufall;
    }
    if (*temp==Zufall)
    {
       return rnd(a,b);
    }
}
</code></pre>
<p>Ich hab mir gedacht ich speichere die vorherige Zufallszahl auf dem HEap, weil auf diesem ja nichts gelöscht wird, auch nicht nach Beendigung der Funktion. Und wann den die Variable Zufall mit der Zahl auf dem Heap übereinstimmt dann wird die selbe Funktion wieder aufgerufen und returned, solange bis die Variable Zufall nicht mehr mit der Zahl auf dem Heap übereinstimmt.<br />
Aber irgendwie gibt es immer noch zwei gleiche Zahlen hintereinander.<br />
Kann sich jemand vorstellen was ich bezwecken möchte? Und geht das auch? Ich glaub das meine Funktion nicht geht hat irgendwas mit der Zeile:</p>
<pre><code class="language-cpp">int *temp=new int;
</code></pre>
<p>zu tun. Da immer wieder neuer Speicher mit dem selben Namen reserviert wird, das is glaub ziemlich böse da ja dann Speicherlecks entstehen, aber wie kann ich das dann machen, das *temp nur ein einziges mal auf dem Heap reserviert wird, und nicht wieder überschrieben wird, sodass man immer auf die gleiche Stell auf dem Heap zugreift???<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169117/zufalls-funktion</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 16:54:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169117.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 Jan 2007 08:59:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 09:00:35 GMT]]></title><description><![CDATA[<p>Ich wollte meine Zufalls Funktion verbessern, sodass nie zweimal der gleiche Zufall ist bzw. die gleiche Zahl:</p>
<pre><code class="language-cpp">long rnd(long a,long b)
{
    int Zufall=(rand() % (b-a+1)) + a;
    int *temp=new int;
    if (*temp!=Zufall)
    {
        *temp=Zufall;
        return Zufall;
    }
    if (*temp==Zufall)
    {
       return rnd(a,b);
    }
}
</code></pre>
<p>Ich hab mir gedacht ich speichere die vorherige Zufallszahl auf dem HEap, weil auf diesem ja nichts gelöscht wird, auch nicht nach Beendigung der Funktion. Und wann den die Variable Zufall mit der Zahl auf dem Heap übereinstimmt dann wird die selbe Funktion wieder aufgerufen und returned, solange bis die Variable Zufall nicht mehr mit der Zahl auf dem Heap übereinstimmt.<br />
Aber irgendwie gibt es immer noch zwei gleiche Zahlen hintereinander.<br />
Kann sich jemand vorstellen was ich bezwecken möchte? Und geht das auch? Ich glaub das meine Funktion nicht geht hat irgendwas mit der Zeile:</p>
<pre><code class="language-cpp">int *temp=new int;
</code></pre>
<p>zu tun. Da immer wieder neuer Speicher mit dem selben Namen reserviert wird, das is glaub ziemlich böse da ja dann Speicherlecks entstehen, aber wie kann ich das dann machen, das *temp nur ein einziges mal auf dem Heap reserviert wird, und nicht wieder überschrieben wird, sodass man immer auf die gleiche Stell auf dem Heap zugreift???<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200955</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 02 Jan 2007 09:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 09:12:49 GMT]]></title><description><![CDATA[<p>du brauchst srand, bevor du rand aufrufst.</p>
<p><a href="http://www.cplusplus.com/reference/clibrary/cstdlib/srand.html" rel="nofollow">http://www.cplusplus.com/reference/clibrary/cstdlib/srand.html</a></p>
<p>sie arbeiten zusammen.</p>
<p>ps: zur zweiten frage, warum denn auf dem heap? und warum nicht der funktion .. wenn schon auf dem heap, den zeiger auf die stelle übergeben, und vorher allozieren, und später freigeben..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200959</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Tue, 02 Jan 2007 09:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 09:13:49 GMT]]></title><description><![CDATA[<p>Du könntest temp als statische Variable definieren, dann existiert sie nur einmal im Programm:</p>
<pre><code class="language-cpp">long rnd(long a,long b)
{
    int Zufall=(rand() % (b-a+1)) + a;
    static int temp=a-1;//Startwert ist garantiert außerhalb des Ziel-Intervalls
    if (temp!=Zufall)
    {
        temp=Zufall;
        return Zufall;
    }
    else
    {
       return rnd(a,b);
    }
}
</code></pre>
<p>(PS: Wenn du dir mehrere frühere Zufallswerte merken willst, benötigst du ein Array oder einen STL-Container)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200963</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 02 Jan 2007 09:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 09:18:45 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Ich wollte meine Zufalls Funktion verbessern,...</p>
</blockquote>
<p>... was prinzipiell eine gute Idee ist.<br />
Aaaaber: Bedenke, dass Du &quot;Zufall nur durch Zufall erzeugst&quot; <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="😉"
    /><br />
Wenn Du also verbessern möchtest, brauchst Du eine weitere &quot;Zufallsquelle&quot;. Das Ganze ist nicht trivial und hat weniger mit Programmiertechnik als mit dem Konzept zu tun.</p>
<p>Ich habe allerdings den Eindruck, dass das, was Du willst, eigentlich schon srand() (und ein sinnvoller Umgang damit) erledigt ... und wenn Du bei jedem Programmstart einen anderen Startwert haben willst, kannst Du das srand() über einen entsprechenden &quot;seed-Parameter&quot; mitteilen (r.B. letztes erzeugtes rand() oder aktueller Timestamp oder Rauschen am PCI-Bus oder ....).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1200966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1200966</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 02 Jan 2007 09:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 10:36:36 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Ich wollte meine Zufalls Funktion verbessern, sodass nie zweimal der gleiche Zufall ist bzw. die gleiche Zahl:</p>
</blockquote>
<p>Super! Wenn du CStolls Lösung eingebaut hast solltest du deine Funktion am besten noch &quot;zufälliger&quot; machen:</p>
<p>Sorg dafür dass niemals zwei<br />
- ungerade Zahlen<br />
- gerade Zahlen<br />
- Primzahlen<br />
- Zahlen der Form x^n<br />
- ...<br />
aufeinander folgen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201012</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 02 Jan 2007 10:36:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 11:13:38 GMT]]></title><description><![CDATA[<p>Danke für eure viele Tipps und Anregungen ich werd jetzt gleich mal versuchen das alles umzusetzen.<br />
Das hier...</p>
<pre><code class="language-cpp">srand(time(0));
rand()
</code></pre>
<p>...ist natürlich immer fester Bestandteil meines Programms und wird gleich ganz am anfang von der main eingefügt, hab aber jetzt halt bloß meine Funktion gepostet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201022</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 02 Jan 2007 11:13:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 11:34:27 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>Super! Wenn du CStolls Lösung eingebaut hast solltest du deine Funktion am besten noch &quot;zufälliger&quot; machen:</p>
<p>Sorg dafür dass niemals zwei<br />
- ungerade Zahlen<br />
- gerade Zahlen<br />
- Primzahlen<br />
- Zahlen der Form x^n<br />
- ...<br />
aufeinander folgen</p>
</blockquote>
<p>Das war doch ironisch gemeint, oder? <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>Die ganze Idee ist doch total unsinnig, denn du <strong>verschlechterst</strong> durch solche Bedingungen doch nur deine Zufallsfunktion. Warum sollte denn nicht zweimal hintereinander dieselbe Zahl fallen? Die Wahrscheinlichkeit für jede Zahl sollte doch immer gleich sein. Du hingegen veränderst die Wahrscheinlichkeiten, indem du einige Zahlen basierend auf vorherigen Ergebnissen unmöglich machst.</p>
<p>Beim Würfeln kommt es ja auch vor, dass man mehrmals hintereinander dieselbe Zahl würfelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201032</guid><dc:creator><![CDATA[TomasRiker]]></dc:creator><pubDate>Tue, 02 Jan 2007 11:34:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 11:38:52 GMT]]></title><description><![CDATA[<p>Auch hier muss ich <a href="http://eternallyconfuzzled.com/arts/jsw_art_rand.aspx" rel="nofollow">diesen Artikel</a> erwähnen. Der ist so gut, dass ich ihn sogar in meine Sig gepackt hab. Aber um den Artikel zu verstehen muss man natürlich erst verstehen was Zufall überhaupt ist <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/1201034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201034</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 02 Jan 2007 11:38:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 11:40:22 GMT]]></title><description><![CDATA[<p>TomasRiker schrieb:</p>
<blockquote>
<p>finix schrieb:</p>
<blockquote>
<p>...<br />
aufeinander folgen</p>
</blockquote>
<p>Das war doch ironisch gemeint, oder? <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>
</blockquote>
<p>Wie kommst jetzt darauf? <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>
<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/1201035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201035</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 02 Jan 2007 11:40:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 11:46:49 GMT]]></title><description><![CDATA[<p>Bei meinem Zufall darf das aber nicht passieren, schon klar das bei einem Zufall auch mal 2 Zahlen hintereinander kommen aber 1.die Zufallsfunktion in C++ find ich soieso irgendwie merkwürdig, das ist kein richtiger Zufall sondern es wird nur errechnet und ist somit kein Zufall mehr weil mans immer ausrechnen kann. 2.was ist eigentlich Zufall ist das was C++ da jetzt macht Zufall oder ist es Zufall wenn man diesen nicht errechnet sondern &quot;zufällig&quot; vom Treiber rauschen bekommt (hab da mal sowas gelesen das man das mit so ner Speziellen Hardware machen kann), oder ist es nur Zufall wenn man würfelt oder gibts überhaupt gar keinen Zufall. Ich find das is jetzt schon fast bisschen philosophisch.<br />
3. Bei mir dürfen keine gleichen Zahlen hintereinander kommen, da <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-169080-and-start-is-0.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-169080-and-start-is-0.html</a> da ist mein Programm bisschern weiter gepostet (jetzt funktioniert alles und es ist bisschen umgebaut) zumindestens will ich nicht das der &quot;Bot&quot; zweimal den gleichen Satz sagt. Wäre ja immer blöd wenn der dreimal hintereinander sagt &quot;Schön dich zu sehen.&quot; &quot;Schön dich .....&quot;........&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201039</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 02 Jan 2007 11:46:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 11:56:06 GMT]]></title><description><![CDATA[<p>Ja, deswegen heißt das Ding auch korrekterweise Pseudozufallsgenerator <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="😉"
    /> (solche Rechenverfahren liefern idR nur Werte, die in gewissen Toleranzbereichen zufällig aussehen - aber wenn du spaßeshalber mal das <code>srand(time(0));</code> durch <code>srand(0);</code> ersetzt, wirst du sehen, wie zufällig die Zaholenfolge wirklich ist)</p>
<p>Echten Zufall kannst du nur erhalten, wenn du auf etwas zurückgreifst, was du von außen nicht beeinflussen kannst, z.B. statisches Rauschen oder ein Würfelbecher (obwohl - wer richtig wirft, kann da dem &quot;Zufall&quot; auch auf die Sprünge helfen ;)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201049</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 02 Jan 2007 11:56:06 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 12:03:31 GMT]]></title><description><![CDATA[<p>Könnte so ein statisches Rauschen nicht auch von außen beeinflusst werden, z.B. wenn man mit dem Handy telefoniert? <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/1201051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201051</guid><dc:creator><![CDATA[TomasRiker]]></dc:creator><pubDate>Tue, 02 Jan 2007 12:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 12:17:16 GMT]]></title><description><![CDATA[<p>Möglicherweise - aber da brauchst du schon sehr exakte Geräte, um dein Wunsch-Ergebnis herbeizutelefonieren <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="😉"
    /> (und für so einen Chat-Bot müsste die Pseudo-Verteilung von rand() eigentlich exakt genug sein)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201065</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 02 Jan 2007 12:17:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 12:53:34 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Bei meinem Zufall darf das aber nicht passieren, schon klar das bei einem Zufall auch mal 2 Zahlen hintereinander kommen aber</p>
</blockquote>
<p>Hätte man sich fast denken können. Du setzt an der komplett falschen Stelle an. Die Lösung ist nicht <code>int random( int min, int max )</code> (ja, Bezeichner dürfen lang &amp; sinnvoll sein) kaputt zu machen, sondern dein Bot muss sich selber merken welche Antwort er zuletzt gegeben hat (ggf mehr als nur die letzte -&gt; <code>std::deque</code> , <code>std::list</code> ).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201086</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 02 Jan 2007 12:53:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 13:24:15 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>...1.die Zufallsfunktion in C++ find ich soieso irgendwie merkwürdig, das ist kein richtiger Zufall sondern es wird nur errechnet und ist somit kein Zufall mehr weil mans immer ausrechnen kann. 2.was ist eigentlich Zufall ist das was C++ da jetzt macht Zufall oder ist es Zufall wenn man diesen nicht errechnet sondern &quot;zufällig&quot; vom Treiber rauschen bekommt (hab da mal sowas gelesen das man das mit so ner Speziellen Hardware machen kann), oder ist es nur Zufall wenn man würfelt oder gibts überhaupt gar keinen Zufall. Ich find das is jetzt schon fast bisschen philosophisch.<br />
3. Bei mir dürfen keine gleichen Zahlen hintereinander kommen, da <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-169080-and-start-is-0.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-169080-and-start-is-0.html</a> da ist mein Programm bisschern weiter gepostet (jetzt funktioniert alles und es ist bisschen umgebaut) zumindestens will ich nicht das der &quot;Bot&quot; zweimal den gleichen Satz sagt. Wäre ja immer blöd wenn der dreimal hintereinander sagt &quot;Schön dich zu sehen.&quot; &quot;Schön dich .....&quot;........&quot;.</p>
</blockquote>
<p>*** semantic underflow error ***<br />
Sorry, aber das kann kein Mensch lesen. <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="🙄"
    /></p>
<p>Übrigens: Zufall ist mitnichten &quot;philospohisch&quot; (im Sinne von &quot;kann jeder machen, wie er will&quot;), sondern durchaus streng mathematisch zu fassen.<br />
Du musst Dich halt entscheiden, welches <em>Zufallskriterium</em> Du brauchst (und in welchem Maß): Unvorhersagbarkeit ? gleichförmige Verteilung ? Unabhängigkeit von bestimmten Parametern (z.B. Zeit) ? ....</p>
<p>Ersteres also schonmal nicht, denn Deine Forderung &quot;x(i) != x(i-1)&quot; bricht damit - übrigens sitzt Du damit einem Trugschluß über den Zufall auf. Darf denn der übernächste Wert wieder gleich sein ? Oder auch das nicht ? Und der überübernächste ? ....<br />
Mit jeder weiteren Abhängigkeit schränkst Du den Zufall weiter ein - obwohl Du ihn doch eigentlich erweitern willst, oder ?</p>
<p>Ach ja: &quot;Echten Zufall&quot; (im Sinne von underterministischem Verhalten) wirst Du mit deterministischen Algorithmen sowieso nicht hinbekommen - egal, wie Du sie noch &quot;verrickelst&quot;.<br />
Dann lies lieber gleich den (ungenutzten) Eingang der TV-Karte aus.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201119</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 02 Jan 2007 13:24:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 13:33:17 GMT]]></title><description><![CDATA[<p>Oder du häckst ein paar Dialog-Abläufe hart ein und läufst diese einfach durch. Dann hast du zwar mehrere Abläufe fest vorgegeben, aber garantiert nichts doppelt. Du wirst dann zwar immer noch eine random-Funktion brauchen, um einen der vielen Dialog-Abläufe zufällig auszuwählene, aber das ist dann wirklich nicht mehr anders zu lösen.</p>
<p>Wenn du andere Random-Algos brauchst: in der Boost-Library sind welche vorhanden. Habe von der Materie selber aber keine Ahnung. Sieht aber interessant aus:<br />
<a href="http://www.boost.org/libs/random/index.html" rel="nofollow">http://www.boost.org/libs/random/index.html</a></p>
<p>Diese random-Lib ist auch im TR1 drin, dürfte hier im Forum aber noch niemand haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201132</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 02 Jan 2007 13:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 17:25:43 GMT]]></title><description><![CDATA[<p>Hier wäre jetzt die Zufallsfunktion die eigentlich immer die letzten 10 Zufallszahlen speichert, sodass der Bot nie hintereinander 10 gleiche Sätze ausliest. Hm aber irgendwie bin ich mir nicht so ganz sicher ob das auch funktioniert,(also es kommen keine Errors das mein ich nicht) einerseits bilde ich mir ein das es geht andererseits hab ich mir auch schon eingebildet (Einbildung ist die schönste Bildung <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="😃"
    /> ) das es nicht funktioniert. (Hab halt die Zahlen mitgezählt und deren Abstände) Aber irgendwie bin ich mir überhaupt nicht mehr sicher und umso länger ich mir die Funktion anschaue, desto konfuser wird sie für mich. Obwohl ichs ja noch vor 5 min Verstanden habe. Deshalb müsst ihr jetzt mal als aussenstehende das betrachten und mir sagen ob das sch.... oder nicht.</p>
<pre><code class="language-cpp">long rnd(long a,long b)
{
    int Zufall=(rand() % (b-a+1)) + a;
    static int *temp=new int[10];
    static int *counter=new int(0);
    static int *hv=new int(0);

    if (*counter&gt;10)
    {
        *counter=0;
    }
    if (*hv&gt;10)
    {
        *hv=10;
    }

    for(int i=0;i&lt;*hv+1;i++)
    {
        if(Zufall==temp[i])
        {
            return rnd(a,b);
        }
    }
    temp[*counter]=Zufall;
    *counter++;
    *hv++;
    return Zufall;
}
</code></pre>
<p>Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201343</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 02 Jan 2007 17:25:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 17:34:31 GMT]]></title><description><![CDATA[<p>Jo, Boost.Random ist gut. Nimm einfach boost::mt19937, das ist ein echt guter Generator. Der hat u.A. den &quot;die hard test&quot; bestanden, einer der härtesten Tests für Zufallszahlengeneratoren.</p>
<p>Zum Seeden verwendest du dann z.B. /dev/rand (*nix) bzw. CryptGenRandom (win32), dann hast du sehr sehr gute Zufallszahlen.</p>
<p>Und zu guten Zufallszahlen gehört auch dass manchmal 2x (oder auch öfters) hintereinander die gleiche Zahl kommt.</p>
<p>p.S.: zum Thema Bot: schreib doch einfach alle Antworten beim Initialisieren des Bots in einen Vektor, und mische den dann mit Hilfe des Zufallszahlengenerators durch. Dann gehst du einfach der Reihe nach den Vektor durch, und wenn du am Ende angekommen bist mischt du den Vektor nochmal durch und fängst von vorne an.</p>
<p>Und natürlich tuts für so eine einfache und unkritische Aufgabe auch rand() <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/1201345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201345</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 02 Jan 2007 17:34:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 17:58:47 GMT]]></title><description><![CDATA[<p>Die Idee mit den vectoren durchmixen is echt clever <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="🙂"
    /> mal schaun ob ich das umsetze, aber was sagst du zu der Funktion?<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201364</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 02 Jan 2007 17:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Tue, 02 Jan 2007 17:59:38 GMT]]></title><description><![CDATA[<p>Die Idee mit den vectoren durchmixen is echt clever <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="🙂"
    /> mal schaun ob ich das umsetze, aber was sagst du zu der Funktion?<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201365</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 02 Jan 2007 17:59:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Wed, 03 Jan 2007 07:25:36 GMT]]></title><description><![CDATA[<p>Die Funktion sieht recht nett aus, nur daß du das new dort nicht unbedingt brauchst:</p>
<pre><code class="language-cpp">long rnd(long a,long b)
{
    int Zufall=(rand() % (b-a+1)) + a;
    static int temp[10];
    static int counter=0;
    static int hv=0;
    ...
}
</code></pre>
<p>Eventuell könntest du die Rekursion noch durch eine Schleife ersetzen:</p>
<pre><code class="language-cpp">while(find(temp,temp+hv,Zufall)!=temp+hv)
  Zufall = rand()%(b-a+1) + a;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1201567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201567</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 Jan 2007 07:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Wed, 03 Jan 2007 09:16:35 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>...ist ein echt guter Generator...</p>
</blockquote>
<p>Dass Problem ist aber wohl, dass er gar keine echten Zufallszahlen will. Letztlich will Stromberg auf eine Strategie hinaus - und da ist echter Zufall nur bedingt hilfreich.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14886">@Stromberg</a>: Ich würde Dir raten, &quot;Zufallszahl&quot; und &quot;Strategie&quot; komplett zu trennen - so wie Du schon damit anfängst, indem Du die Regel &quot;Zug darf nicht innerhalb der letzten 10 Züge vorkommen&quot; aufstellst. Werde Dir doch erstmal klar darüber, welche sonstigen Strategieregeln Du verfolgen möchtest ... das ist viel wesentlicher als die Qualität der Zufallszahl.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201617</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 03 Jan 2007 09:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Wed, 03 Jan 2007 09:21:00 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">...
    static int *counter=new int(0);
    static int *hv=new int(0);
...
</code></pre>
<p>...</p>
</blockquote>
<p>Kann es sein, dass Du von Java kommst ?<br />
<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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201625</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 03 Jan 2007 09:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Wed, 03 Jan 2007 09:29:28 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Die Idee mit den vectoren durchmixen is echt clever <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="🙂"
    /> mal schaun ob ich das umsetze, aber was sagst du zu der Funktion?<br />
Dankeschön schon mal im Voraus.</p>
</blockquote>
<p>Ich würde auf jede Fall das</p>
<pre><code class="language-cpp">static int *temp=new int[10];
    static int *counter=new int(0);
    static int *hv=new int(0);
</code></pre>
<p>in das</p>
<pre><code class="language-cpp">static int temp[10] = {};
    static int counter = 0;
    static int hv = 0;
</code></pre>
<p>ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201634</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 03 Jan 2007 09:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Wed, 03 Jan 2007 11:19:37 GMT]]></title><description><![CDATA[<p>Ja halt mh jetzt hab ich ein Verständnis Problem! Ich hab ja das hier gemacht:</p>
<pre><code class="language-cpp">static int *temp=new int[10];
static int *counter=new int(0);
static int *hv=new int(0);
</code></pre>
<p>Weil: Wenn ich die Variablen nicht auf dem Heap reserviere dann werden die doch nach Beendigung der Funktion wieder gelöscht. Aber ich will doch das die auch beim neuen Funktionsaufruf scon mitgezählt haben. Weil was auf dem Heap deklariert wird, da is es doch so das es erst wieder gelöscht wird wenn man die halt mit delete löscht. Und static benutze ich da ja nur, das sie nur einmal deklariert werden und nicht andauernd überschrieben werden und es dann Speicherlecks gibt!<br />
Oder macht static etwa etwas anderes hab ich hier irgendwas falsch verstanden.<br />
Bitte klärt mich auf :)! Dankeschön schon mal im Voraus.</p>
<p>PS: Is mir noch aufgefallen hier is n kleiner Fehler drin. Gut das ich den selber gefunden habe is n peinlicher Fehler.</p>
<pre><code class="language-cpp">long rnd(long a,long b)
{
    int Zufall=(rand() % (b-a+1)) + a;
    static int *temp=new int[10]; //&lt;-- wenn das Array 10 Felder hat dann is es ja von 0-9
    static int *counter=new int(0);
    static int *hv=new int(0);

    if (*counter&gt;10) //Dann muss es hier aber heißen if(*counter&gt;9)
    {
        *counter=0;
    }
    if (*hv&gt;10)  //Und hier muss es heißen is *hv&gt;9
    {
        *hv=10;
    }

    for(int i=0;i&lt;*hv+1;i++)
    {
        if(Zufall==temp[i])
        {
            return rnd(a,b);
        }
    }
    temp[*counter]=Zufall;
    *counter++;
    *hv++;
    return Zufall;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1201740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201740</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Wed, 03 Jan 2007 11:19:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zufalls Funktion on Wed, 03 Jan 2007 11:26:06 GMT]]></title><description><![CDATA[<p>Wenn du die Variable als 'static' deklarierst, wird sie nicht auf dem Stack untergebracht und überlebt schon von sich aus das Ende der Funktion. Da ist es nicht nötig, sich noch zusätzlichen Heap-Speicher anzufordern (der übrigens nie wieder freigegeben wird).</p>
<p>PS: Und den Flüchtigkeitsfehler hast du vermutlich an der falschen Stelle ausgemerzt - lass lieber das &quot;i&lt;*hv+1&quot; in der for-Schleife weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1201749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1201749</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 Jan 2007 11:26:06 GMT</pubDate></item></channel></rss>