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.
Want faster number-crunching in Python? You can speed up your existing Python code with the Numba JIT, often with only one instruction. Python is not the fastest language, but lack of speed hasn’t ...