Implement a function to randomly shuffle a dataset (list of data points) so that every permutation is equally likely. This is the Fisher-Yates shuffle.
import random
def shuffle_data(data: list, seed: int = None) -> list:
if seed is not None:
random.seed(seed)
shuffled = list(data)
n = len(shuffled)
for i in range(n - 1, 0, -1):
j = random.randint(0, i)
shuffled[i], shuffled[j] = shuffled[j], shuffled[i]
return shuffled