Gunnar Bittersmann: C++ (Pseudo-)Zufallszahl generieren

Beitrag lesen

@@Nick:

nuqneH

Ich möchte eine positive 24bit Zufallszahl generieren. Dazu habe ich mir folgende Funktion geschrieben:

Wenn du _eine_ Zufallszahl möchtest, ist es unsinnig, das mit einer Schleife zu tun, die 24 Mal läuft.

int createRandom24()

{
    unsigned random24 = 1;

for(int i = 0; i < 23; i++)
    {
        random24 = (random24 * 10) + (rand() % 2);
    }
    return random24;
}

  
Wieso `\* 10`?  
  

> Ich erstelle mir also eine Bitfolge und stelle mit der 1 am Anfang sicher, dass sie auch garantiert eine 24bit Zahl darstellt.  
  
Wieso läuft die Schleife 24 Mal, wenn du vorn eine 1 und dann 23 Stellen haben möchtest?  
  
  
Du möchtest eine Zufallszahl im Bereich 2²³ bis 2²⁴ − 1?  
  
`random24 = rand() * 2^23 + 2^23;`{:.language-c}  
  
siehe [C++ Reference](http://www.cplusplus.com/reference/cstdlib/rand/)  
  
Dazu muss RAND\_MAX natürlich mindestens 2²³ sein.  
  
Ansonsten kannst du `rand()`{:.language-c} zweimal aufrufen. Aber nicht 24 Mal.  
  
Qapla'

-- 
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)