【发布时间】:2012-02-12 14:29:21
【问题描述】:
我正在使用 boost/random.hpp 用区间 [1,3] 上的随机数填充 std::map 并有一种组合在一起的东西,这些东西会给我每个计数相对于生成数字的总量,但正在寻找一种可能更有效的方法。我一直在尝试在 boost 库中找到一些东西,但找不到完全相关的东西;有什么东西可以使用我的地图(我不想更改我的地图类型)并计算百分比或其他我应该考虑的东西吗?
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.
}
编辑:我不想以任何方式更改地图容器。
【问题讨论】: