Он случайным образом переставляет элементы в диапазоне [первый, последний).
Алгоритм меняет значение каждого элемента на какой-либо другой случайно выбранный элемент.
Про различия между
shuffle и random_shuffle можно почитать здесь.
SE Senior C++ Developer @seniorcpp · 11.6K subscribers 
shuffle и random_shuffle можно почитать здесь.