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.
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 ...