Well, I went searching the whole engine code just in case I would find a solution, and the only thing I found was more or less the same in file
UE_4.22\Engine\Source\Runtime\AnimGraphRuntime\Private\AnimNodes\AnimNode_RandomPlayer.cpp(322)
// Shuffle the list
const int32 NumShuffles = ShuffleList.Num() - 1;
for(int32 i = 0 ; i < NumShuffles ; ++i)
{
int32 SwapIdx = RandomStream.RandRange(i, NumShuffles);
ShuffleList.Swap(i, SwapIdx);
}
If Epic does it this way, maybe they don’t have a better one yet.