// binomial_distribution
#include <ctime>
#include <iostream>
#include <random>
int main ()
{
int nrolls = 60; // number of experiments
const std::size_t N = 6;
unsigned int bucket[N] = {};
std::mt19937 generator(time(nullptr));
for (int i = 0; i != N; ++i) {
double proba = 1. / static_cast<double>(N - i);
std::binomial_distribution<int> distribution (nrolls, proba);
bucket[i] = distribution(generator);
nrolls -= bucket[i];
}
for (int i = 0; i != N; ++i) {
std::cout << i << ": " << bucket[i] << std::endl;
}
return 0;
}
Ly8gYmlub21pYWxfZGlzdHJpYnV0aW9uCiNpbmNsdWRlIDxjdGltZT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgoKaW50IG1haW4gKCkKewogICAgaW50IG5yb2xscyA9IDYwOyAvLyBudW1iZXIgb2YgZXhwZXJpbWVudHMKICAgIGNvbnN0IHN0ZDo6c2l6ZV90IE4gPSA2OwogICAgdW5zaWduZWQgaW50IGJ1Y2tldFtOXSA9IHt9OwoKICAgIHN0ZDo6bXQxOTkzNyBnZW5lcmF0b3IodGltZShudWxscHRyKSk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gTjsgKytpKSB7CiAgICAgICAgZG91YmxlIHByb2JhID0gMS4gLyBzdGF0aWNfY2FzdDxkb3VibGU+KE4gLSBpKTsKICAgICAgICBzdGQ6OmJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3RyaWJ1dGlvbiAobnJvbGxzLCBwcm9iYSk7CiAgICAgICAgYnVja2V0W2ldID0gZGlzdHJpYnV0aW9uKGdlbmVyYXRvcik7CiAgICAgICAgbnJvbGxzIC09IGJ1Y2tldFtpXTsKICAgIH0KCiAgICBmb3IgKGludCBpID0gMDsgaSAhPSBOOyArK2kpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgaSA8PCAiOiAiIDw8IGJ1Y2tldFtpXSA8PCBzdGQ6OmVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=