How would you implement a function to generate a random sample from a specific distribution? Implement categorical sampling using the inverse transform method. The function receives outcome values, matching probabilities, a sample size, and a random seed, then returns a reproducible list of sampled outcomes. Inputs are values, probabilities, n, and seed; probabilities are nonnegative and sum to 1, and n is nonnegative. Return exactly n values, preserving the supplied outcome types.
def sample_distribution(values, probabilities, n, seed):