6 stellige Zufallszahl generieren



  • hallo,
    möchte eine 6 stellige zufallszahlen generieren lassen...
    aber ich bekomm immer nur die gleiche zahl *g*

    cu

    unsigned int Server::generateUserId()
    {
    	std::srand(time(0)); 
    	return ((double) std::rand() / 899999) + 100000;
    }
    


  • rand()%900000+100000
    

    würd ich jetzt mal spontan sagen 😞

    edit:
    autsch, wenn du immer std::srand(time(0)); machst 😃
    mach die funktion am besten so:

    unsigned int Server::generateUserId()
    {
        static int i=0;
        if (!i) {
            std::srand(time(0));
            ++i;
        }
        return rand()%900000+100000;
    }
    


  • ja;-)

    am besten std::srand(time(0)); in den konstruktor geben;-)

    wann würde man boost::random nehmen?

    cu



  • öhm, mit boost::random kenn ich mich ned aus,
    aber für sonen fall sollte es das normale rand auch tun ^^
    boost random bietet afaik mehr möglichkeiten auf welche weise die pseudo zufalls zahl generiert wird, aber ich mach mich hier mal nicht fest, da ich wie gesagt keine ahnung hab ^^
    schau am besten mal auf www.boost.org



  • #include <cstdlib>
    #include <ctime>
    #include <iostream>
    
    namespace {
      int init_rng(unsigned seed) {
        std::srand(seed);
        return 0;
      }
    
      int my_rand() {
        static int foo = init_rng(unsigned(std::time(0U)));
        return rand();
      }
    }
    
    int rand_6() {
      return my_rand() % 899999 + 100000;
    }
    
    int main() {
      for(int i = 0; i < 10; ++i)
        std::cout << rand_6() << std::endl;
    
      return 0;
    }
    

Anmelden zum Antworten