#include <iostream>
#include <vector>
#include <string>
#include <random>
using strvec = std:: vector < std:: string > ;
const strvec article = { "the" , "a" , "one" , "some" , "any" } ;
const strvec noun = { "boy" , "girl" , "dog" , "town" , "car" } ;
const strvec verb = { "drove" , "jumped" , "ran" , "walked" , "skipped" } ;
const strvec preposition= { "to" , "from" , "over" , "on" } ;
template < typename T>
T random( T min, T max)
{
static std:: mt19937 rng;
std:: uniform_int_distribution < T> dist( min,max) ;
return dist( rng) ;
}
const std:: string & get_random( const strvec& v)
{
return v[ random< size_t > ( 0 ,v.size ( ) - 1 ) ] ;
}
int main( )
{
for ( size_t i= 0 ; i< 10 ; i++ )
{
std:: cout << get_random( article) << " "
<< get_random( noun) << " "
<< get_random( verb) << " "
<< get_random( preposition) << " "
<< get_random( noun) << "."
<< std:: endl ;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8cmFuZG9tPgoKdXNpbmcgc3RydmVjID0gc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+OwoKY29uc3Qgc3RydmVjIGFydGljbGUgICAgPSB7ICJ0aGUiLCAiYSIsICJvbmUiLCAic29tZSIsICJhbnkiIH07CmNvbnN0IHN0cnZlYyBub3VuICAgICAgID0geyAiYm95IiwgImdpcmwiLCAiZG9nIiwgInRvd24iLCAiY2FyIiB9Owpjb25zdCBzdHJ2ZWMgdmVyYiAgICAgICA9IHsgImRyb3ZlIiwgImp1bXBlZCIsICJyYW4iLCAid2Fsa2VkIiwgInNraXBwZWQiIH07CmNvbnN0IHN0cnZlYyBwcmVwb3NpdGlvbj0geyAidG8iLCAiZnJvbSIsICJvdmVyIiwgIm9uIiB9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClQgcmFuZG9tKFQgbWluLCBUIG1heCkKewogICAgc3RhdGljIHN0ZDo6bXQxOTkzNyBybmc7CiAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxUPiBkaXN0KG1pbixtYXgpOwogICAgcmV0dXJuIGRpc3Qocm5nKTsKfQoKY29uc3Qgc3RkOjpzdHJpbmcgJiBnZXRfcmFuZG9tKGNvbnN0IHN0cnZlYyYgdikKewoJcmV0dXJuIHZbcmFuZG9tPHNpemVfdD4oMCx2LnNpemUoKS0xKV07CQp9CgppbnQgbWFpbigpIAp7Cglmb3Ioc2l6ZV90IGk9MDsgaTwgMTA7IGkrKykKCXsKCQlzdGQ6OmNvdXQgPDwgZ2V0X3JhbmRvbShhcnRpY2xlKSAgICAgPDwgIiAiCgkJICAgICAgICAgIDw8IGdldF9yYW5kb20obm91bikgICAgICAgIDw8ICIgIgoJCSAgICAgICAgICA8PCBnZXRfcmFuZG9tKHZlcmIpICAgICAgICA8PCAiICIKCQkJCSAgPDwgZ2V0X3JhbmRvbShwcmVwb3NpdGlvbikgPDwgIiAiCgkJICAgICAgICAgIDw8IGdldF9yYW5kb20obm91bikgICAgICAgIDw8ICIuIgoJCSAgICAgICAgICA8PCBzdGQ6OmVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==