Shuffle is not actually random.
std::srand() seeds the pseudo-random number generator used by rand(). If rand() is used before any calls to std::srand(), rand() behaves as if it was seeded with std::srand(1).
Each time rand() is seeded with std::srand(), it must produce the same sequence of values on successive calls.
https://en.cppreference.com/w/cpp/numeric/random/rand
To reproduce: "Play All" with shuffle on, and skip some tracks. It will always produce the same order.
Also, it looks like #include <QRandomGenerator>
isn't actually ever used?