Zahlen in einem Bereich generieren ?



  • Hallo,

    wie kann man in C++ Zufallszahlen zwischen zwei Grenzen erzeugen ?? Ich bin schon die ganze Zeit mit srand() usw. am rumbastelen aber irgendwie klappt das nicht. Wo sind da die kniffe ?

    Vielen Danl 🙂



  • int random( int min, int max )
    {
      return min + rand() % (max - min);
    }
    


  • Besser ohne % und mit RAND_MAX!



  • min + rand() * (max - min)?

    gibt rand() nicht eine Zufallszahl zwischen 0 und 1 aus? Dann müsste das doch klappen, oder?



  • Aus der manpage rand(3):

    In Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press,
    1992 (2nd ed., p. 277)), the following comments are made:
    "If you want to generate a random integer between 1 and 10, you should always do it by using high-order bits, as in

    j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));

    and never by anything resembling

    j = 1 + (rand() % 10);

    (which uses lower-order bits)."

    Random-number generation is a complex topic. The Numerical Recipes in C book (see reference above) provides an excellent discussion of practical random-number generation
    issues in Chapter 7 (Random Numbers).

    Ansonsten gleich boost verwenden 😉


Anmelden zum Antworten