Boost.Randomで簡単な確率
たまに欲しくなるのでメモ。
#include <iostream> #include <ctime> #include <boost/array.hpp> #include <boost/random.hpp> using namespace boost; int main() { // 80%の確率で0, 20%の確率で1 array<int, 10> probability = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1}; mt19937 gen(static_cast<unsigned long>(std::time(0))); uniform_int<> dst(0, probability.size() - 1); variate_generator<mt19937, uniform_int<> > rand(gen, dst); for (int i = 0; i < 10; i++) { std::cout << probability[rand()] << std::endl; } }
0 0 0 0 0 1 1 0 0 0