私は、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 –