Если вы посмотрите на характеристики случайного перетасовки в C++ 11, есть 3 функции. Мой вопрос: что это типичное использование и преимущества:Использование и утилита std :: shuffle?
template< class RandomIt, class URNG >
void shuffle(RandomIt first, RandomIt last, URNG&& g);
по сравнению с:
template< class RandomIt >
void random_shuffle(RandomIt first, RandomIt last);
Я имею в виду, кажется, что все, что URNG есть (равномерное распределение), то результат будет таким же, (со статистической точки зрения). Единственное, что я вижу, это то, что std::shuffle
является безопасным, тогда как эта перегрузка std::random_shuffle
- нет. Не могли бы вы подтвердить это?
EDIT: Я думал, что URNG должен быть равномерным распределением, но это, похоже, не компилируется. Так может ли кто-нибудь дать небольшой пример использования std::shuffle
?
Ну, первый позволяет выбрать генератор случайных чисел. Второй - нет. – juanchopanza
Мне трудно поверить, что результат тот же. Как именно вы называете 'std :: shuffle'? – Xeo
@Xeo, когда я говорю «то же», я имею в виду «статистически то же самое». – Vincent