#include <algorithm>
#include <ctime>
#include <functional>
#include <iostream>
#include <random>
#include <string>
int main()
{
const std::size_t defaultStringLength = 50;
//std::random_device seed;
//std::mt19937 prne(seed());
// random_device is way better, but no access to hardware at ideone
std::mt19937 prne( std::time(NULL) );
std::vector<double> bounds = {'A', 'Z'+1, 'a', 'z'+1};
std::vector<double> weights = { 1, 0, 1};
std::piecewise_constant_distribution<> d(bounds.begin(), bounds.end(), weights.begin());
std::string s(defaultStringLength, ' ');
std::generate(s.begin(), s.end(), bind(d, ref(prne)));
std::cout << s << '\n';
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8c3RyaW5nPgoKaW50IG1haW4oKQp7CiAgICBjb25zdCBzdGQ6OnNpemVfdCBkZWZhdWx0U3RyaW5nTGVuZ3RoID0gNTA7CgogICAgLy9zdGQ6OnJhbmRvbV9kZXZpY2Ugc2VlZDsKICAgIC8vc3RkOjptdDE5OTM3IHBybmUoc2VlZCgpKTsKICAgIC8vIHJhbmRvbV9kZXZpY2UgaXMgd2F5IGJldHRlciwgYnV0IG5vIGFjY2VzcyB0byBoYXJkd2FyZSBhdCBpZGVvbmUKICAgIHN0ZDo6bXQxOTkzNyBwcm5lKCBzdGQ6OnRpbWUoTlVMTCkgKTsKCiAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGJvdW5kcyA9IHsnQScsICdaJysxLCAnYScsICd6JysxfTsKICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gd2VpZ2h0cyA9IHsgICAxLCAgMCwgICAxfTsKICAgIHN0ZDo6cGllY2V3aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlvbjw+IGQoYm91bmRzLmJlZ2luKCksIGJvdW5kcy5lbmQoKSwgd2VpZ2h0cy5iZWdpbigpKTsKCiAgICBzdGQ6OnN0cmluZyBzKGRlZmF1bHRTdHJpbmdMZW5ndGgsICcgJyk7CgogICAgc3RkOjpnZW5lcmF0ZShzLmJlZ2luKCksIHMuZW5kKCksIGJpbmQoZCwgcmVmKHBybmUpKSk7CgogICAgc3RkOjpjb3V0IDw8IHMgPDwgJ1xuJzsKfQo=