Я использую boost / random.hpp, чтобы заполнить std :: map случайными числами на интервале [1,3], и получаю что-то вроде чего-то, что даст мне% от каждого счета по отношению кобщее количество сгенерированных чисел, но искал, возможно, более эффективный способ сделать это.Я пытался найти что-то в библиотеке наддува, но у меня возникли проблемы с поиском чего-то совершенно уместного;Есть ли что-то такое, что может использовать мою карту (я не хочу менять типы карт) и вычислять% или что-либо еще, что я должен учитывать?
int main()
{
std::map <int, long> results;
int current;
long one = 0;
long two = 0;
long three = 0;
long total = 0;
boost::random::mt19937 rng;
rng.seed(static_cast<boost::uint32_t> (std::time(0)));
boost::random::uniform_int_distribution<int> random(1,3);
for (int n = 0; n < 1000000; ++n)
{
current = random(rng);
++total;
switch (current)
{
case 1:
++one;
break;
case 2:
++two;
break;
case 3:
++three;
break;
}
}
results[1] = one;
results[2] = two;
results[3] = three;
std::cout << (double) results[1]/total*100 << std::endl; // etc.
}
edit: я не делаюхотите изменить контейнер карты любым способом.