@@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)