Пытаюсь заполнить массив случайными уникальными числами
Никак не могу понять почему не вылетает исключение в том случае,
если разница между randomRangeMin и randomRangeMаx == 1
если разница больше - все ок
Код :
#include <iostream> #include <iterator> #include <algorithm> #include <vector> int main() { std::vector<int> array; auto randomRangeMin = 1; auto randomRangeMax = 2; auto randomRange = randomRangeMax - randomRangeMin; try { std::generate_n( std::back_inserter(array) , 10 , [&](){ int tryCount = 0; int rnd = 0; while ( (rnd = std::rand()%randomRange + randomRangeMin) > randomRangeMin // fake condition for assignment && array.end() != std::find(array.begin(), array.end(), rnd) ) { if (tryCount >= randomRange ) { throw std::logic_error("cant generate unique element for array"); } ++tryCount; } return rnd; } ); } catch ( const std::exception & err ) { std::cout << "Error: " << err.what() << std::endl; } std::copy( array.begin() , array.end() , std::ostream_iterator<int>(std::cout, " ") ); return EXIT_SUCCESS; }
туплю под вечер наверно
результат работы:
1 1 1 1 1 1 1 1 1 1