Fisher–Yates shuffle for arrays and lists