#include <boost/coroutine/coroutine.hpp>
#include <boost/coroutine/all.hpp>
#include <iostream>
#include <random>
typedef boost::coroutines::coroutine<int()> coroutine_type;
void
random_generator(coroutine_type::caller_type& coroutine){
std::mt19937 engin;
std::uniform_int_distribution<int> distribution(1, 6);
coroutine(engin());
while( 1 ){
coroutine(distribution(engin));
}
}
int
main(){
coroutine_type random(random_generato);
for(int i = 0 ; i < 20 ; ++i){
std::cout << random() << std::endl;
}d::endl;
return 0;
}
I2luY2x1ZGUgPGJvb3N0L2Nvcm91dGluZS9jb3JvdXRpbmUuaHBwPgojaW5jbHVkZSA8Ym9vc3QvY29yb3V0aW5lL2FsbC5ocHA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHJhbmRvbT4KCgp0eXBlZGVmIGJvb3N0Ojpjb3JvdXRpbmVzOjpjb3JvdXRpbmU8aW50KCk+IGNvcm91dGluZV90eXBlOwoKCnZvaWQKcmFuZG9tX2dlbmVyYXRvcihjb3JvdXRpbmVfdHlwZTo6Y2FsbGVyX3R5cGUmIGNvcm91dGluZSl7CiAgICBzdGQ6Om10MTk5MzcgZW5naW47CglzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3RyaWJ1dGlvbigxLCA2KTsKCWNvcm91dGluZShlbmdpbigpKTsKCgl3aGlsZSggMSApewoJCWNvcm91dGluZShkaXN0cmlidXRpb24oZW5naW4pKTsKCX0KfQoKCmludAptYWluKCl7Cgljb3JvdXRpbmVfdHlwZSByYW5kb20ocmFuZG9tX2dlbmVyYXRvKTsKCQoJZm9yKGludCBpID0gMCA7IGkgPCAyMCA7ICsraSl7CgkJc3RkOjpjb3V0IDw8IHJhbmRvbSgpIDw8IHN0ZDo6ZW5kbDsKCX1kOjplbmRsOwoKCXJldHVybiAwOwp9Cgo=