1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <utility> #include <iostream> #include <cstdlib> template< typename Ret, typename Last > Ret random_picker_impl( size_t i, Last&& last ) { return std::forward<Last>(last); } template< typename Ret, typename First, typename Second, typename ... Rest > Ret random_picker_impl( size_t i, First&& first, Second&& second, Rest&&... rest ) { if( i == 0 ) { return std::forward<First>(first); } else { return random_picker_impl<Ret>( i-1, std::forward<Second>(second), std::forward<Rest>(rest)... ); } } template< typename First, typename ... Rest > First random_picker( First&& first, Rest&&... rest ) { size_t index = (sizeof...(rest) + 1) * (std::rand() / double(RAND_MAX)); return random_picker_impl<First>( index, std::forward<First>(first), std::forward<Rest>(rest)... ); } int main() { for( int i=0; i<20; ++i ) { auto i = random_picker( 1, 2, 3 ); std::cout << "chose: " << i << '\n'; } } |
I2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNzdGRsaWI+Cgp0ZW1wbGF0ZTwgdHlwZW5hbWUgUmV0LCB0eXBlbmFtZSBMYXN0ID4KUmV0IHJhbmRvbV9waWNrZXJfaW1wbCggc2l6ZV90IGksIExhc3QmJiBsYXN0ICkKewogICByZXR1cm4gc3RkOjpmb3J3YXJkPExhc3Q+KGxhc3QpOwp9Cgp0ZW1wbGF0ZTwgdHlwZW5hbWUgUmV0LCB0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kLCB0eXBlbmFtZSAuLi4gUmVzdCA+ClJldCByYW5kb21fcGlja2VyX2ltcGwoIHNpemVfdCBpLCBGaXJzdCYmIGZpcnN0LCBTZWNvbmQmJiBzZWNvbmQsIFJlc3QmJi4uLiByZXN0ICkKewogICBpZiggaSA9PSAwICkKICAgewogICAgICByZXR1cm4gc3RkOjpmb3J3YXJkPEZpcnN0PihmaXJzdCk7CiAgIH0KICAgZWxzZQogICB7CiAgICAgIHJldHVybiByYW5kb21fcGlja2VyX2ltcGw8UmV0PiggaS0xLCBzdGQ6OmZvcndhcmQ8U2Vjb25kPihzZWNvbmQpLCBzdGQ6OmZvcndhcmQ8UmVzdD4ocmVzdCkuLi4gKTsKICAgfQp9Cgp0ZW1wbGF0ZTwgdHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIC4uLiBSZXN0ID4KRmlyc3QgcmFuZG9tX3BpY2tlciggRmlyc3QmJiBmaXJzdCwgUmVzdCYmLi4uIHJlc3QgKQp7CiAgIHNpemVfdCBpbmRleCA9IChzaXplb2YuLi4ocmVzdCkgKyAxKSAqIChzdGQ6OnJhbmQoKSAvIGRvdWJsZShSQU5EX01BWCkpOwogICByZXR1cm4gcmFuZG9tX3BpY2tlcl9pbXBsPEZpcnN0PiggaW5kZXgsIHN0ZDo6Zm9yd2FyZDxGaXJzdD4oZmlyc3QpLCBzdGQ6OmZvcndhcmQ8UmVzdD4ocmVzdCkuLi4gKTsKfQoKaW50IG1haW4oKQp7CiAgIGZvciggaW50IGk9MDsgaTwyMDsgKytpICkKICAgewogICAgICBhdXRvIGkgPSByYW5kb21fcGlja2VyKCAxLCAyLCAzICk7CiAgICAgIHN0ZDo6Y291dCA8PCAiY2hvc2U6ICIgPDwgaSA8PCAnXG4nOwogICB9Cn0K
-
upload with new input
-
result: Success time: 0s memory: 2828 kB returned value: 0
chose: 3 chose: 2 chose: 3 chose: 3 chose: 3 chose: 1 chose: 2 chose: 3 chose: 1 chose: 2 chose: 2 chose: 2 chose: 2 chose: 2 chose: 3 chose: 3 chose: 2 chose: 3 chose: 1 chose: 2


