Landmarks select_landmarks_random(RandomAccessIterator begin, RandomAccessIterator end, DefaultScalarType ratio) { Landmarks landmarks; landmarks.reserve(end-begin); for (RandomAccessIterator iter=begin; iter!=end; ++iter) landmarks.push_back(iter-begin); random_shuffle(landmarks.begin(),landmarks.end()); landmarks.erase(landmarks.begin() + static_cast<unsigned int>(landmarks.size()*ratio),landmarks.end()); return landmarks; }