#include #include constexpr size_t MAX_LEVEL = 32; void generateRandomLevel(std::vector &v, long run_times) { // auto levels = new int[size]; std::random_device randomDevice; std::mt19937 randomEngine(randomDevice()); std::geometric_distribution<> distribution(0.5); for (int i = 0; i < run_times; i++) { v[(int)std::min(MAX_LEVEL, (size_t)distribution(randomEngine))]++; } } int main(int argc, char const *argv[]) { auto run_times = 65536L; if (argc >= 2) { run_times = strtol(argv[1], nullptr, 10); } std::vector result(MAX_LEVEL + 3); generateRandomLevel(result, run_times); for (int i = 0; i < 32; i++) { if (!result[i]) { continue; } printf("%d: %d\n", i, result[i]); } }