<?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[Binärer Zufallsgenerator]]></title><description><![CDATA[<p>Hi,</p>
<p>ich brauche einen Zufallsgenerator für 8-Bit Zahlen, also von 0 bis 255. Dafür wollte ich mir die Zahl dezimal generieren lassen, und dann in binär umwandeln. Bisher habe ich das immer mit itoa gemacht, aber das ist ja leider nicht ANSI-Standard.<br />
Hat jemand von Euch eine kurze Version dafür?</p>
<p>Vielen Dank im Voraus, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169809/binärer-zufallsgenerator</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 20:27:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169809.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Jan 2007 08:34:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 08:34:46 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich brauche einen Zufallsgenerator für 8-Bit Zahlen, also von 0 bis 255. Dafür wollte ich mir die Zahl dezimal generieren lassen, und dann in binär umwandeln. Bisher habe ich das immer mit itoa gemacht, aber das ist ja leider nicht ANSI-Standard.<br />
Hat jemand von Euch eine kurze Version dafür?</p>
<p>Vielen Dank im Voraus, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206169</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 08:38:09 GMT]]></title><description><![CDATA[<p>Du kannst dir doch eine &quot;normale&quot; Zufallszahl per rand() (oder einen der vielen bekannten Zufallsgeneratoren, die im Netz herumschwirren) erzeugen und dann auf deinen gewünschten Wertebereich runterskalieren (wahlweise als <code>zahl=rand()%256;</code> oder <code>zahl=rand()*(256.0/RAND_MAX);</code> - ersteres geht schneller, letzteres liefert afair zufälligere Werte).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206170</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:38:09 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 08:41:51 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>die Frage war eigentlich weniger die, wie man eine Zufallszahl erzeugt, sondern vielmehr, wie ich sie in eine Binärzahl umwandel. Das Auffüllen mit Nullen vorne würde ich dann auch noch schaffen, ich suche nur einfach einen Ersatz für</p>
<pre><code class="language-cpp">char buffer[256]; 
itoa(zahl,buffer,2);
</code></pre>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206174</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:41:51 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 08:44:35 GMT]]></title><description><![CDATA[<p>Entweder du baust dir selber eine Funktion dafür ( <code>for(bit=1&lt;&lt;8;bit;bit&gt;&gt;=1) ret.push_back((val&amp;bit)?'1':'0');</code> ) oder du schaust dir mal die Klasse bitset&lt;&gt; an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206176</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:44:35 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 08:46:42 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>danke für Deine schnelle Antwort. Kannst Du mir das hier vielleicht noch einmal erklären?</p>
<pre><code class="language-cpp">(for(bit=1&lt;&lt;8;bit;bit&gt;&gt;=1) ret.push_back((val&amp;bit)?'1':'0');)
</code></pre>
<p>Diese Schreibweise ist mir nicht so ganz geläufig...</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206177</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:46:42 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 08:56:36 GMT]]></title><description><![CDATA[<p>OK, dann muß ich die Funktion mal komplett darstellen:</p>
<pre><code class="language-cpp">string to_bin_str(unsigned char value)
{
  string ret;
  for(unsigned char bit = 1&lt;&lt;7;//beginne mit 1&lt;&lt;7 = (1000 0000)b
      bit;                     //entspricht 'bit!=0'
      bit&gt;&gt;=1)                 //verschiebe Bitstelle um 1 nach rechts
    ret.push_back((value&amp;bit)?'1':'0');
    //je nachdem, ob das aktuelle Bit in 'value' gesetzt ist, wird entweder 0 oder 1 an den String angehängt
  return ret;
}
</code></pre>
<p>Die Funktion klappert einfach alle Bitstellen der Eingabe von oben nach unten ab und wandelt sie jeweils in eine Binärziffer um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206188</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 11:41:06 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ne, das ist auch nicht das, was ich suche (glaube ich).<br />
Wenn ich mir eine int-Zahl zwischen 0 und 255 erzeugt haben lasse, möchte ich sie in eine Binärzahl umwandeln, also z.B. int 174 wird zu binär 10101110. Das geht ja mit der itoa-Funktion mit Basis 2. Es geht mir also primär nur um das umrechnen... Aber wenn möglich eben ohne so eine Funktion wie: Wenn x durch 128 &gt; 1, dann setze msb auf 1, sonst 0...</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206273</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Tue, 09 Jan 2007 11:41:06 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 11:53:09 GMT]]></title><description><![CDATA[<p>Was meinst Du denn, wie eine solche Funktion das intern regelt? <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>Ich würde vorschlagen Du baust Dir eine Funktion ähnlich der von CStoll präsentierten und nennst sie itoa (sie muss auch nicht zwangsläufig mit std::string arbeiten). Bei ihrer Benutzung glaubst Du dann ganz fest daran dass sie ohne &quot;Bitschieberei&quot; auskommt <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>EDIT:<br />
Alternative zur Bitschieberei wäre die Teilerei, aber das macht intern auch keinen Unterschied. Einfacher wird es vielleicht wenn Du die Länge fest auf 8 (o.ä.) begrenzt.</p>
<pre><code class="language-cpp">string result;
while ( wert &gt; 0 ) {
   result = ( wert % 2 ? '1' : '0' ) + result;
   wert /= 2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1206276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206276</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 09 Jan 2007 11:53:09 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 11:56:07 GMT]]></title><description><![CDATA[<p>Ich fürchte, um diese Bitschieberei wirst du nicht herumkommen - du kannst nur vermeiden, sie von Hand zu programmieren, indem du vorgefertigte Funktionen verwendest (die sehen aber intern ähnlich aus wie das da oben ;)).</p>
<p>PS: Wenn es dir zu unsicher ist, diese Umwandlung von Hand zu schreiben, leg dir einen std::bitset an und verwende ihn für die Umwandlung - wie das geht, habe ich kurz in meinem Magazin-Artikel &quot;Aufbau der STL - Teil 3&quot; angerissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206282</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 09 Jan 2007 11:56:07 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 14:02:12 GMT]]></title><description><![CDATA[<p>Also, ich hatte da mal so eine Methode, die mit Subtraktion arbeitet.</p>
<p>Ich hab das mal so gemacht:<br />
(ausführliche Version. Gehört selbstverständlich in eine Schleife ;D)</p>
<pre><code class="language-cpp">char c = 125;  //Irgendein Byte
char s[8] = {'0', '0', '0', '0', '0', '0', '0', '0'};

if(c-128 &gt; 0)
{
c -= 128;
s[8] = 1;
}

if(c-64 &gt; 0)
{
c -= 64;#
s[7] = 1;
}

etc....
</code></pre>
<p>Das ist allerdings kein guter Code, weil zum einen (spätestens wenn mans in ne Schleife packt und dabei pow() benutzt) das ganze ineffizent ist, außerdem ist bitshift eleganter...</p>
<p>Also das funzt so:<br />
du nimmst beispielsweise einen char, und von dem möchtest du die binäre Darstellung. Dann nimmst du dazu einen anderen char und setzt den auf 1.<br />
Dann sieht der char so aus:<br />
00000001<br />
So. Dann haben wir ja die bitweisen Operationen, speziell hier das bitweise UND, also &amp;.</p>
<p>Wenn char c = 15, dann sieht das so aus:<br />
c: 00001111<br />
b: 00000001<br />
c&amp;b: 00000001</p>
<p>Also alles wie beim logischen &amp;&amp;, nur dass es auf jedes bit angewendet wird.</p>
<p>Dann verschiebe man b um 1 nach links.</p>
<p>b = b &lt;&lt; 1;<br />
(Also: 00000010 )</p>
<p>Dann dasselbe nochmal:<br />
c: 00001111<br />
b: 00000010<br />
c&amp;b: 00000010</p>
<p>Usw.</p>
<p>Ich hoffe, das ist verständlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206348</guid><dc:creator><![CDATA[ne0r]]></dc:creator><pubDate>Tue, 09 Jan 2007 14:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Zufallsgenerator on Tue, 09 Jan 2007 16:44:42 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich habe das jetzt so gemacht:</p>
<pre><code class="language-cpp">string bin;
int teiler = 128;

for (int i=8; i&gt;0; i--) {
    if ((zahl/teiler) &gt;= 1) {
       bin = bin + &quot;1&quot;;
       zahl = zahl - teiler;
    }
    else bin = bin + &quot;0&quot;;

    teiler = teiler/2;
}
</code></pre>
<p>Nicht schön, aber selten <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>Trotzdem noch einmal vielen Dank für Eure Hilfe!!!</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206434</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Tue, 09 Jan 2007 16:44:42 GMT</pubDate></item></channel></rss>