Python is convenient and flexible, yet notably slower than other languages for raw computational speed. The Python ecosystem has compensated with tools that make crunching numbers at scale in Python ...
Learn the NumPy trick for generating synthetic data that actually behaves like real data.
Create an rng object with np.random.default_rng(), you can seed it for reproducible results. You can draw samples from probability distributions, including from the binomial and normal distributions.