fork download
#include <iostream>
#include <random>
#include <cstdint>
#include <tuple>
#include <algorithm>



std::size_t DoOne(std::size_t N, std::size_t C) {
	std::size_t V = 0;
	std::size_t Re = N;
	std::size_t T = 0;

	std::random_device rd;
	std::mt19937 mt(rd());
	//std::mt19937 mt;
	//std::minstd_rand mr(rd());
	std::uniform_int_distribution<std::size_t> UI(1, 10);
	do {
		N = Re;
		Re = 0;
		T = 0;
		for (std::size_t i = 0; i < N; i++) {
			std::size_t X = UI(mt);
			T = std::max(T,X);
			//T = std::max(T,UI(mr));
			if (X >= C) { Re++; }
		}
		V += T;
	}while(Re != 0);

	return V;
}

int main() {
	std::uintmax_t V = 0;

	std::size_t DiceCount = 10;
	std::size_t NumberLimit = 5;
	std::size_t L = 1200000;
	std::size_t Min = 11*DiceCount;
	std::size_t Max = 0;
	for (std::size_t i = 0; i < L; i++) {
		std::size_t T = DoOne(DiceCount, NumberLimit);
		V += T;
		Min = std::min(Min, T);
		Max = std::max(Max, T);

	}

	std::cout << "Do " << L << " count." << std::endl;
	std::cout << "Min:" << Min << ',' << "Max:" << Max << std::endl;
	std::cout << "Average:" << V / (double)L << std::endl;

	return 0;
}
Success #stdin #stdout 4.98s 4548KB
stdin
Standard input is empty
stdout
Do 1200000 count.
Min:3,Max:246
Average:47.0578