<?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[uniform_int (Default-Grenzen)]]></title><description><![CDATA[<p>Ich habe folgendes Problem bei der Verwendung von uniform_int:</p>
<p>Das Programm</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;limits&gt;
#include &lt;random&gt;

int main(){

  std::uniform_int&lt;int&gt; d1(0,5);
  std::uniform_int&lt;int&gt; d2(0, std::numeric_limits&lt;int&gt;::max() );
  std::uniform_int&lt;int&gt; d3(0, std::numeric_limits&lt;int&gt;::max()-1 );
  std::uniform_int&lt;int&gt; d4;
  std::random_device engine; 

  for(int i=0;i&lt;20;i++)
    std::cout &lt;&lt; d1(engine) &lt;&lt; &quot;, &quot; &lt;&lt; d2(engine) &lt;&lt; &quot;, &quot; &lt;&lt; d3(engine) &lt;&lt; &quot;, &quot; &lt;&lt; d4(engine) &lt;&lt; std::endl;

return 0;
}
</code></pre>
<p>erzeugt (beispielsweise):</p>
<pre><code>4, 187814261, 102652988, 3
2, -648718276, 1679202299, 6
2, 1372624328, 765237345, 5
3, -1540032838, 797276814, 9
1, -771150835, 474634352, 7
2, 1377803294, 1033337517, 9
0, 1873334337, 41097559, 7
1, 883776287, 949191094, 3
5, 1861892312, 347015643, 6
4, -1830732994, 1594757603, 8
1, 34938031, 1754090444, 6
0, -531933977, 369957329, 9
4, 1617876776, 1088135942, 8
5, -1513411046, 166204414, 7
3, -858987703, 1217361698, 4
3, 104777878, 1988711095, 4
4, -1210357411, 832529763, 1
5, 1566511073, 1541628068, 3
2, 1504092888, 868577866, 1
2, 1270818533, 2047213062, 1
</code></pre>
<p>Auch bei weiteren Versuchen liefert<br />
d1 (wie erwartet) Zahlen zwischen 0 und 5,<br />
d2 (wie nicht erwartet) auch negative Zahlen,<br />
d3 (wie erwartet) &quot;große&quot; Zahlen und<br />
d4 (wie nicht erwartet) Zahlen zwischen 0 und 9.</p>
<p>Liegt der Fehler bei mir oder bei meinem Compiler (g++ 4.4.4, -std=c++0x)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288312/uniform_int-default-grenzen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 02:19:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288312.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Jun 2011 14:29:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to uniform_int (Default-Grenzen) on Tue, 14 Jun 2011 14:34:01 GMT]]></title><description><![CDATA[<p>Ich habe folgendes Problem bei der Verwendung von uniform_int:</p>
<p>Das Programm</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;limits&gt;
#include &lt;random&gt;

int main(){

  std::uniform_int&lt;int&gt; d1(0,5);
  std::uniform_int&lt;int&gt; d2(0, std::numeric_limits&lt;int&gt;::max() );
  std::uniform_int&lt;int&gt; d3(0, std::numeric_limits&lt;int&gt;::max()-1 );
  std::uniform_int&lt;int&gt; d4;
  std::random_device engine; 

  for(int i=0;i&lt;20;i++)
    std::cout &lt;&lt; d1(engine) &lt;&lt; &quot;, &quot; &lt;&lt; d2(engine) &lt;&lt; &quot;, &quot; &lt;&lt; d3(engine) &lt;&lt; &quot;, &quot; &lt;&lt; d4(engine) &lt;&lt; std::endl;

return 0;
}
</code></pre>
<p>erzeugt (beispielsweise):</p>
<pre><code>4, 187814261, 102652988, 3
2, -648718276, 1679202299, 6
2, 1372624328, 765237345, 5
3, -1540032838, 797276814, 9
1, -771150835, 474634352, 7
2, 1377803294, 1033337517, 9
0, 1873334337, 41097559, 7
1, 883776287, 949191094, 3
5, 1861892312, 347015643, 6
4, -1830732994, 1594757603, 8
1, 34938031, 1754090444, 6
0, -531933977, 369957329, 9
4, 1617876776, 1088135942, 8
5, -1513411046, 166204414, 7
3, -858987703, 1217361698, 4
3, 104777878, 1988711095, 4
4, -1210357411, 832529763, 1
5, 1566511073, 1541628068, 3
2, 1504092888, 868577866, 1
2, 1270818533, 2047213062, 1
</code></pre>
<p>Auch bei weiteren Versuchen liefert<br />
d1 (wie erwartet) Zahlen zwischen 0 und 5,<br />
d2 (wie nicht erwartet) auch negative Zahlen,<br />
d3 (wie erwartet) &quot;große&quot; Zahlen und<br />
d4 (wie nicht erwartet) Zahlen zwischen 0 und 9.</p>
<p>Liegt der Fehler bei mir oder bei meinem Compiler (g++ 4.4.4, -std=c++0x)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078038</guid><dc:creator><![CDATA[thomas___]]></dc:creator><pubDate>Tue, 14 Jun 2011 14:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to uniform_int (Default-Grenzen) on Tue, 14 Jun 2011 14:35:26 GMT]]></title><description><![CDATA[<p>1. Ok.<br />
2. Hmm, vermutlich irgendein Überlauf, sehe gerade aber selber nicht wo<br />
3. Ok.<br />
4. Das soll so sein, Defaultparameter sind 0 und 9.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078045</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 14 Jun 2011 14:35:26 GMT</pubDate></item><item><title><![CDATA[Reply to uniform_int (Default-Grenzen) on Tue, 14 Jun 2011 14:37:12 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>1. Ok.<br />
2. Hmm, vermutlich irgendein Überlauf, sehe gerade aber selber nicht wo<br />
3. Ok.<br />
4. Das soll so sein, Defaultparameter sind 0 und 9.</p>
</blockquote>
<p><code>d2</code> sollte nur positiv sein. Alles andere ist so korrekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078047</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 14 Jun 2011 14:37:12 GMT</pubDate></item><item><title><![CDATA[Reply to uniform_int (Default-Grenzen) on Tue, 14 Jun 2011 15:17:39 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>4. Das soll so sein, Defaultparameter sind 0 und 9.</p>
</blockquote>
<p>Gibt es da einen Unterschied zu uniform_int_distribution? (Ich dachte, das sei im wesentlichen das gleiche und nur der Name sei abgeändert worden).</p>
<p>Im C++0x-Draft, Version N3242, steht (26.5.8.2.1) steht:</p>
<pre><code class="language-cpp">// constructors and reset functions
explicit uniform_int_distribution(IntType a = 0, IntType b = numeric_limits&lt;IntType&gt;::max());
explicit uniform_int_distribution(const param_type&amp; parm);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2078079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078079</guid><dc:creator><![CDATA[thomas___]]></dc:creator><pubDate>Tue, 14 Jun 2011 15:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to uniform_int (Default-Grenzen) on Tue, 14 Jun 2011 15:22:32 GMT]]></title><description><![CDATA[<p>Das ist ein gcc-Bug, der <a href="http://gcc.gnu.org/ml/libstdc++/2010-06/msg00156.html" rel="nofollow">im Juni 2010 behoben</a> wurde. Der Fix ist in gcc 4.6 enthalten.</p>
<p>uniform_int heißt inzwischen übrigens uniform_int_distribution, wie es C++11 verlangt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078085</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 14 Jun 2011 15:22:32 GMT</pubDate></item><item><title><![CDATA[Reply to uniform_int (Default-Grenzen) on Tue, 14 Jun 2011 15:34:35 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Das ist ein gcc-Bug, der <a href="http://gcc.gnu.org/ml/libstdc++/2010-06/msg00156.html" rel="nofollow">im Juni 2010 behoben</a> wurde. Der Fix ist in gcc 4.6 enthalten.</p>
</blockquote>
<p>Vielen Dank für den Hinweis!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078093</guid><dc:creator><![CDATA[thomas___]]></dc:creator><pubDate>Tue, 14 Jun 2011 15:34:35 GMT</pubDate></item></channel></rss>