6er-Würfel



  • Möchte einen flexiblen ausbaufähigen 6er Würfel basteln?



  • #include <ctime>
    #include <iostream>
    
    int RollDice() {
        return rand() % 6 + 1;
    }
    
    int main() {
        srand(time(0));
        for(int i = 0; i < 10; ++i) {
            std::cout << RollDice() << std::endl;
        }
    }
    

    Was heißt "ausbaufähig"???

    mfg.



  • #include <iostream> 
    #include <iomanip> 
    #include <conio.h> 
    #include <cstdlib> 
    #include <ctime> 
    
    class RandomStdlib // verwendet rand() aus <cstdlib>
    { 
    private: 
       const unsigned int seed_; 
    public: 
       RandomStdlib():seed_( static_cast<unsigned>(time(0)) ){} 
    
       int getNum() const 
       { 
         static bool seed_flag=0; 
         if(!seed_flag) 
         { 
           srand(seed_); 
           seed_flag = true; 
         } 
         return rand(); 
       } 
    }; 
    
    /******************************************************************/ 
    
    template<typename T_Generator> class Wuerfel 
    { 
    private: 
      const unsigned int maxzahl_; 
      const unsigned int maxrandom_; 
      T_Generator zahlengenerator_; // Template-Typ 
    
    public: 
      Wuerfel(unsigned int maxzahl):maxzahl_(maxzahl),maxrandom_(RAND_MAX-(RAND_MAX%maxzahl)) {} 
    
      unsigned int wuerfelt() 
      { 
        unsigned int r; 
        do{ r = zahlengenerator_.getNum(); } 
          while ( r >= maxrandom_ ); 
        return ( r % maxzahl_ +1 ); 
      } 
    }; 
    
    /******************************************************************/ 
    
    int main() 
    { 
      const unsigned long long Serie     = 3; 
      const unsigned long long Versuche  = 30000000; 
      const unsigned int limit           = 200; 
      const unsigned int moeglichkeiten  = 6; 
    
      Wuerfel<RandomStdlib>     w(moeglichkeiten); 
      unsigned long long H[moeglichkeiten+1]; 
    
      for(unsigned long long i=1; i<Serie+1; ++i) 
      { 
        for(unsigned int j=0; j<moeglichkeiten+1; ++j) 
          H[j] = 0; 
        for(unsigned long long k=1; k<Versuche+1; ++k) 
        { 
          unsigned int wurf = w.wuerfelt(); // hier wird gewürfelt 
          if(Versuche<limit) 
            std::cout << wurf << " "; 
          ++H[wurf]; 
        } 
    
        for(unsigned int c=1; c<moeglichkeiten+1; ++c) 
        { 
          std::cout << std::endl << c << ": " << H[c] << " " 
                    << std::setprecision(7) 
                    << 100 * static_cast<float>(H[c]) / Versuche << " %"; 
          H[0] += H[c]; 
        } 
        std::cout << std::endl << "Wuerfe insgesamt: " << H[0] 
                  << std::endl << std::endl; 
      } 
      getch(); 
    }
    

Anmelden zum Antworten