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;
}