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.
Tired of out-of-memory errors derailing your data analysis? There's a better way to handle huge arrays in Python.