#include <random>
#include <array>
#include <iostream>
int RollADice1(const std::array<int, 6>& chances) {
static std::random_device rd; //Will be used to obtain a seed for the random number engine
static std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
static std::discrete_distribution<int> distrib(chances.cbegin(), chances.cend());
return distrib(gen);
}
int main() {
constexpr std::array<int, 6> chances {
100,
100,
200,
100,
100,
600
};
std::array<int, 6> arr{};
for(int i=0; i < 120'000; ++i) {
++arr.at(RollADice1(chances));
}
for(int i=0; i < arr.size(); ++i) {
std::cout << i << ' ' << arr[i] << '\n';
}
std::cout << "Sum: " << std::accumulate(arr.begin(), arr.end(), 0) << '\n';
}
I2luY2x1ZGUgPHJhbmRvbT4KI2luY2x1ZGUgPGFycmF5PgojaW5jbHVkZSA8aW9zdHJlYW0+CgppbnQgUm9sbEFEaWNlMShjb25zdCBzdGQ6OmFycmF5PGludCwgNj4mIGNoYW5jZXMpIHsKCXN0YXRpYyBzdGQ6OnJhbmRvbV9kZXZpY2UgcmQ7ICAvL1dpbGwgYmUgdXNlZCB0byBvYnRhaW4gYSBzZWVkIGZvciB0aGUgcmFuZG9tIG51bWJlciBlbmdpbmUKCXN0YXRpYyBzdGQ6Om10MTk5MzcgZ2VuKHJkKCkpOyAvL1N0YW5kYXJkIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lIHNlZWRlZCB3aXRoIHJkKCkKCXN0YXRpYyBzdGQ6OmRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3RyaWIoY2hhbmNlcy5jYmVnaW4oKSwgY2hhbmNlcy5jZW5kKCkpOwoKCXJldHVybiBkaXN0cmliKGdlbik7Cn0KCmludCBtYWluKCkgewoJY29uc3RleHByIHN0ZDo6YXJyYXk8aW50LCA2PiBjaGFuY2VzIHsKCQkxMDAsCgkJMTAwLAoJCTIwMCwKCQkxMDAsCgkJMTAwLAoJCTYwMAoJfTsKCglzdGQ6OmFycmF5PGludCwgNj4gYXJye307CgoJZm9yKGludCBpPTA7IGkgPCAxMjAnMDAwOyArK2kpIHsKCQkrK2Fyci5hdChSb2xsQURpY2UxKGNoYW5jZXMpKTsKCX0KCglmb3IoaW50IGk9MDsgaSA8IGFyci5zaXplKCk7ICsraSkgewoJCXN0ZDo6Y291dCA8PCBpIDw8ICcgJyA8PCBhcnJbaV0gPDwgJ1xuJzsKCX0KCiAgICBzdGQ6OmNvdXQgPDwgIlN1bTogIiA8PCBzdGQ6OmFjY3VtdWxhdGUoYXJyLmJlZ2luKCksIGFyci5lbmQoKSwgMCkgPDwgJ1xuJzsKfQ==