#include <iostream>
#include <iomanip>
#include <random>
#include <map>
using namespace std;
double p[] =
{
0.000203775, 0.00060681, 0.00100307, 0.00139256, 0.00177527,
0.00215121, 0.00252038, 0.00288277, 0.00323839, 0.00358723,
0.00392931, 0.0042646, 0.00459313, 0.00491488, 0.00522985,
0.00553806, 0.00583949, 0.00613414, 0.00642202, 0.00670313,
0.00697747, 0.00724503, 0.00750581, 0.00775983, 0.00800707,
0.00824753, 0.00848123, 0.00870814, 0.00892829, 0.00914166,
0.00934826, 0.00954808, 0.00974113, 0.00992741, 0.0101069,
0.0102796, 0.0104456, 0.0106048, 0.0107572, 0.0109028,
0.0110417, 0.0111738, 0.0112991, 0.0114176, 0.0115294,
0.0116344, 0.0117326, 0.011824, 0.0119087, 0.0119866,
0.0120577, 0.0121221, 0.0121797, 0.0122305, 0.0122745,
0.0123117, 0.0123422, 0.0123659, 0.0123829, 0.012393,
0.0123964, 0.012393, 0.0123829, 0.0123659, 0.0123422,
0.0123117, 0.0122745, 0.0122305, 0.0121797, 0.0121221,
0.0120577, 0.0119866, 0.0119087, 0.011824, 0.0117326,
0.0116344, 0.0115294, 0.0114176, 0.0112991, 0.0111738,
0.0110417, 0.0109028, 0.0107572, 0.0106048, 0.0104456,
0.0102796, 0.0101069, 0.00992741, 0.00974113, 0.00954808,
0.00934826, 0.00914166, 0.00892829, 0.00870814, 0.00848123,
0.00824753, 0.00800707, 0.00775983, 0.00750581, 0.00724503,
0.00697747, 0.00670313, 0.00642202, 0.00613414, 0.00583949,
0.00553806, 0.00522985, 0.00491488, 0.00459313, 0.0042646,
0.00392931, 0.00358723, 0.00323839, 0.00288277, 0.00252038,
0.00215121, 0.00177527, 0.00139256, 0.00100307, 0.00060681,
0.000203775
};
int main([[maybe_unused]] int argc,
[[maybe_unused]] const char* argv[])
{
default_random_engine gen{random_device{}()};
uniform_real_distribution<> dis(0.0, 1.0);
map<int,int> m;
for(int i = 0; i < 1000000; ++i)
{
double r = dis(gen);
int j = -1; double pr = 0;
while(r > pr)
{
pr += p[++j];
}
m[j-60]++;
}
for(auto q: m)
{
cout << setw(3) << q.first << " ; " << setw(7) << q.second << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHJhbmRvbT4KI2luY2x1ZGUgPG1hcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgcFtdID0KewogICAgMC4wMDAyMDM3NzUsIDAuMDAwNjA2ODEsIDAuMDAxMDAzMDcsIDAuMDAxMzkyNTYsIDAuMDAxNzc1MjcsCiAgICAwLjAwMjE1MTIxLCAwLjAwMjUyMDM4LCAwLjAwMjg4Mjc3LCAwLjAwMzIzODM5LCAwLjAwMzU4NzIzLAogICAgMC4wMDM5MjkzMSwgMC4wMDQyNjQ2LCAgMC4wMDQ1OTMxMywgMC4wMDQ5MTQ4OCwgMC4wMDUyMjk4NSwKICAgIDAuMDA1NTM4MDYsIDAuMDA1ODM5NDksIDAuMDA2MTM0MTQsIDAuMDA2NDIyMDIsIDAuMDA2NzAzMTMsCiAgICAwLjAwNjk3NzQ3LCAwLjAwNzI0NTAzLCAwLjAwNzUwNTgxLCAwLjAwNzc1OTgzLCAwLjAwODAwNzA3LAogICAgMC4wMDgyNDc1MywgMC4wMDg0ODEyMywgMC4wMDg3MDgxNCwgMC4wMDg5MjgyOSwgMC4wMDkxNDE2NiwKICAgIDAuMDA5MzQ4MjYsIDAuMDA5NTQ4MDgsIDAuMDA5NzQxMTMsIDAuMDA5OTI3NDEsIDAuMDEwMTA2OSwKICAgIDAuMDEwMjc5NiwgIDAuMDEwNDQ1NiwgIDAuMDEwNjA0OCwgIDAuMDEwNzU3MiwgIDAuMDEwOTAyOCwKICAgIDAuMDExMDQxNywgIDAuMDExMTczOCwgIDAuMDExMjk5MSwgIDAuMDExNDE3NiwgIDAuMDExNTI5NCwKICAgIDAuMDExNjM0NCwgIDAuMDExNzMyNiwgIDAuMDExODI0LCAgIDAuMDExOTA4NywgIDAuMDExOTg2NiwKICAgIDAuMDEyMDU3NywgIDAuMDEyMTIyMSwgIDAuMDEyMTc5NywgIDAuMDEyMjMwNSwgIDAuMDEyMjc0NSwKICAgIDAuMDEyMzExNywgIDAuMDEyMzQyMiwgIDAuMDEyMzY1OSwgIDAuMDEyMzgyOSwgIDAuMDEyMzkzLAogICAgMC4wMTIzOTY0LCAgMC4wMTIzOTMsICAgMC4wMTIzODI5LCAgMC4wMTIzNjU5LCAgMC4wMTIzNDIyLAogICAgMC4wMTIzMTE3LCAgMC4wMTIyNzQ1LCAgMC4wMTIyMzA1LCAgMC4wMTIxNzk3LCAgMC4wMTIxMjIxLAogICAgMC4wMTIwNTc3LCAgMC4wMTE5ODY2LCAgMC4wMTE5MDg3LCAgMC4wMTE4MjQsICAgMC4wMTE3MzI2LAogICAgMC4wMTE2MzQ0LCAgMC4wMTE1Mjk0LCAgMC4wMTE0MTc2LCAgMC4wMTEyOTkxLCAgMC4wMTExNzM4LAogICAgMC4wMTEwNDE3LCAgMC4wMTA5MDI4LCAgMC4wMTA3NTcyLCAgMC4wMTA2MDQ4LCAgMC4wMTA0NDU2LAogICAgMC4wMTAyNzk2LCAgMC4wMTAxMDY5LCAgMC4wMDk5Mjc0MSwgMC4wMDk3NDExMywgMC4wMDk1NDgwOCwKICAgIDAuMDA5MzQ4MjYsIDAuMDA5MTQxNjYsIDAuMDA4OTI4MjksIDAuMDA4NzA4MTQsIDAuMDA4NDgxMjMsCiAgICAwLjAwODI0NzUzLCAwLjAwODAwNzA3LCAwLjAwNzc1OTgzLCAwLjAwNzUwNTgxLCAwLjAwNzI0NTAzLAogICAgMC4wMDY5Nzc0NywgMC4wMDY3MDMxMywgMC4wMDY0MjIwMiwgMC4wMDYxMzQxNCwgMC4wMDU4Mzk0OSwKICAgIDAuMDA1NTM4MDYsIDAuMDA1MjI5ODUsIDAuMDA0OTE0ODgsIDAuMDA0NTkzMTMsIDAuMDA0MjY0NiwKICAgIDAuMDAzOTI5MzEsIDAuMDAzNTg3MjMsIDAuMDAzMjM4MzksIDAuMDAyODgyNzcsIDAuMDAyNTIwMzgsCiAgICAwLjAwMjE1MTIxLCAwLjAwMTc3NTI3LCAwLjAwMTM5MjU2LCAwLjAwMTAwMzA3LCAwLjAwMDYwNjgxLAogICAgMC4wMDAyMDM3NzUKfTsKCgppbnQgbWFpbihbW21heWJlX3VudXNlZF1dIGludCBhcmdjLAogICAgICAgICBbW21heWJlX3VudXNlZF1dIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKewogICAgZGVmYXVsdF9yYW5kb21fZW5naW5lIGdlbntyYW5kb21fZGV2aWNle30oKX07CiAgICB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPD4gZGlzKDAuMCwgMS4wKTsKCgogICAgbWFwPGludCxpbnQ+IG07CgogICAgZm9yKGludCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkKICAgIHsKICAgICAgICBkb3VibGUgciA9IGRpcyhnZW4pOwogICAgICAgIGludCBqID0gLTE7IGRvdWJsZSBwciA9IDA7CiAgICAgICAgd2hpbGUociA+IHByKQogICAgICAgIHsKICAgICAgICAgICAgcHIgKz0gcFsrK2pdOwogICAgICAgIH0KCiAgICAgICAgbVtqLTYwXSsrOwogICAgfQoKICAgIGZvcihhdXRvIHE6IG0pCiAgICB7CiAgICAgICAgY291dCA8PCBzZXR3KDMpIDw8IHEuZmlyc3QgPDwgIiA7ICAiIDw8IHNldHcoNykgPDwgcS5zZWNvbmQgPDwgZW5kbDsKICAgIH0KCn0K