¿Cuál es la diferencia entre shuffle y random_shuffle c ++?

La funciónstd :: shuffle ha sido introducido en C ++ 11:

template< class RandomIt, class URNG >
void shuffle( RandomIt first, RandomIt last, URNG&& g );

y tiene la misma firma que una de las sobrecargas destd :: random_shuffle que también se introdujo en C ++ 11:

template< class RandomIt, class RandomFunc >
void random_shuffle( RandomIt first, RandomIt last, RandomFunc&& r );

La diferencia está en el tercer parámetro donde:

URNG debe cumplir con los requisitos de UniformRandomNumberGenerator

¿Esto es todo? Es la diferencia solo esoshuffle Realiza una verificación de tiempo de compilación extra? ¿Es el comportamiento de otra manera el mismo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta