I want to generate 1 Million and 10 Million data points in the range (0.0001,0.03) using a beta distribution with a=2.2 and b=1. Thanks in advance!
I tried this:
from scipy.stats import beta
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
a, b = 2.2, 1
#Generated pdf of required range
x = np.linspace(0.0001, 0.03, 100)
ax.plot(x, beta.pdf(x, a, b),
'k-', lw=5, alpha=0.6, label='beta pdf')
r = beta.rvs(a, b, size=1000) #Generating values
print(r)
The values in 'r' are not in the range (0.0001,0.03).
For for alpha and beta parameters you are using, the beta distribution is a fairly straight line from
(0, 0)
to(1, 2.2)
. The range you are interested in(0.0001, 0.03)
is both a very thin slice of the 0 to 1 range, but also has a very small probability for the parameters you selected.To actually generate 1M or 10M points, you will need to keep generating points and accumulating them to an array.