Fixed Fisher–Yates shuffle implementation