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(); }