#include <iostream>
#include <random>
using namespace std;
static std::random_device __randomDevice;
static std::mt19937 __randomGen(__randomDevice());
static std::normal_distribution<float> __normalDistribution(0.5, 1);
// Get a normally distributed float value in the range [0,1].
inline float GetNormDistrFloat()
{
float val = -1;
do { val = __normalDistribution(__randomGen); }
while(val < 0.0f || val > 1.0f);
return val;
}
int main() {
int count1=0;
int count2=0;
int count3=0;
int count4=0;
for (int i =0; i< 1000000; i++) {
float val = GetNormDistrFloat();
if (val<0.25){ count1++; continue;}
if (val<0.5){ count2++; continue;}
if (val<0.75){ count3++; continue;}
if (val<1){ count4++; continue;}
}
std::cout<<count1<<", "<<count2<<", "<<count3<<", "<<count4<<std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RhdGljIHN0ZDo6cmFuZG9tX2RldmljZSBfX3JhbmRvbURldmljZTsKc3RhdGljIHN0ZDo6bXQxOTkzNyBfX3JhbmRvbUdlbihfX3JhbmRvbURldmljZSgpKTsKc3RhdGljIHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1dGlvbjxmbG9hdD4gX19ub3JtYWxEaXN0cmlidXRpb24oMC41LCAxKTsKCi8vIEdldCBhIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIGZsb2F0IHZhbHVlIGluIHRoZSByYW5nZSBbMCwxXS4KaW5saW5lIGZsb2F0IEdldE5vcm1EaXN0ckZsb2F0KCkKewogICAgZmxvYXQgdmFsID0gLTE7CiAgICBkbyB7IHZhbCA9IF9fbm9ybWFsRGlzdHJpYnV0aW9uKF9fcmFuZG9tR2VuKTsgfSAKICAgIHdoaWxlKHZhbCA8IDAuMGYgfHwgdmFsID4gMS4wZik7CgogICAgcmV0dXJuIHZhbDsKfQoKaW50IG1haW4oKSB7CglpbnQgY291bnQxPTA7CglpbnQgY291bnQyPTA7CglpbnQgY291bnQzPTA7CglpbnQgY291bnQ0PTA7Cglmb3IgKGludCBpID0wOyBpPCAxMDAwMDAwOyBpKyspIHsKCQlmbG9hdCB2YWwgPSBHZXROb3JtRGlzdHJGbG9hdCgpOwoJCWlmICh2YWw8MC4yNSl7IGNvdW50MSsrOyBjb250aW51ZTt9CgkJaWYgKHZhbDwwLjUpeyBjb3VudDIrKzsgY29udGludWU7fQoJCWlmICh2YWw8MC43NSl7IGNvdW50MysrOyBjb250aW51ZTt9CgkJaWYgKHZhbDwxKXsgY291bnQ0Kys7IGNvbnRpbnVlO30KCX0KCXN0ZDo6Y291dDw8Y291bnQxPDwiLCAiPDxjb3VudDI8PCIsICI8PGNvdW50Mzw8IiwgIjw8Y291bnQ0PDxzdGQ6OmVuZGw7CglyZXR1cm4gMDsKfQ==