#include <cstdio>
#include <cstdlib>
int aCount = 0, bCount = 0, cCount = 0;
void a() { ++aCount; }
void b() { ++bCount; }
void c() { ++cCount; }
float aChance = 0.3f;
float bChance = 0.1f;
float cChance = 0.6f;
const size_t n = 3;
float chance[n] = {aChance, aChance + bChance, 1};
void (*f[n])() = {a, b, c};
int main()
{
for (unsigned t=0; t<1000000; ++t)
{
float x = rand() / (float)RAND_MAX;
for (unsigned q=0; q<n; ++q)
if(x <= chance[q])
{
f[q]();
break;
}
}
printf("%d %d %d\n%d", aCount, bCount, cCount, aCount+bCount+cCount);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdGRsaWI+CgppbnQgYUNvdW50ID0gMCwgYkNvdW50ID0gMCwgY0NvdW50ID0gMDsKCnZvaWQgYSgpIHsgKythQ291bnQ7IH0Kdm9pZCBiKCkgeyArK2JDb3VudDsgfQp2b2lkIGMoKSB7ICsrY0NvdW50OyB9CgpmbG9hdCBhQ2hhbmNlID0gMC4zZjsKZmxvYXQgYkNoYW5jZSA9IDAuMWY7CmZsb2F0IGNDaGFuY2UgPSAwLjZmOwoKY29uc3Qgc2l6ZV90IG4gPSAzOwpmbG9hdCBjaGFuY2Vbbl0gPSB7YUNoYW5jZSwgYUNoYW5jZSArIGJDaGFuY2UsIDF9Owp2b2lkICgqZltuXSkoKSA9IHthLCBiLCBjfTsKCmludCBtYWluKCkKewoJZm9yICh1bnNpZ25lZCB0PTA7IHQ8MTAwMDAwMDsgKyt0KQoJewoJCWZsb2F0IHggPSByYW5kKCkgLyAoZmxvYXQpUkFORF9NQVg7CgkJCgkJZm9yICh1bnNpZ25lZCBxPTA7IHE8bjsgKytxKQoJCQlpZih4IDw9IGNoYW5jZVtxXSkKCQkJewoJCQkJZltxXSgpOwoJCQkJYnJlYWs7CgkJCX0KCX0KCQoJcHJpbnRmKCIlZCAlZCAlZFxuJWQiLCBhQ291bnQsIGJDb3VudCwgY0NvdW50LCBhQ291bnQrYkNvdW50K2NDb3VudCk7CgkKCXJldHVybiAwOwp9