Python methods:

random.seed(a=None)
◦ Initializes the random number generator.
◦ If a is None, uses current system time or OS entropy.
◦ Using the same seed → same random sequence (useful for reproducibility)

Uniform Numbers
▪ random.random() → float in [0.0, 1.0)
▪ random.uniform(a, b) → float in [a, b]
▪ random.randint(a, b) → integer in [a, b] (inclusive)

Choice and Sampling
▪ random.choice(seq) → random element from a sequence
▪ random.choices(seq, weights=None, k=1) → list of k elements (with optional weighting)
▪ random.sample(population, k) → unique sample (no repeats)
▪ random.shuffle(seq) → shuffles list in place

▪ random.normalvariate(mu, sigma) → normal (Gaussian)
▪ random.gauss(mu, sigma) → faster cached Gaussian (same output as above)
▪ random.expovariate(lambd) → exponential
▪ random.lognormvariate(mu, sigma) → log-normal
▪ random.paretovariate(alpha) → Pareto