我正在使用boost/random.hpp在間隔[1,3]上用隨機數填充std :: map,並且將某種東西放在一起,這會使我得到每個計數相對於總數的百分比生成的數字的數量,但正在尋找一個可能更有效的方式來做到這一點。我一直在試圖在助推庫中找到某些東西,但無法找到完全相關的東西;有沒有什麼可以使用我的地圖(我不想改變我的地圖類型)並計算%或其他我應該考慮的東西?有沒有更有效的方法來計算百分比?
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.
}
編輯:我不想以任何方式更改地圖容器。
http://codereview.stackexchange.com – 2012-02-12 14:36:33