Ich verstehe nicht, warum der folgende Code mit der normalen Funktion arbeitet und nicht für eine andere benutzerdefinierte Funktion:Wie man eine Dichte richtig abtastet?
, dass das Beispiel ist, wo ich die Normalverteilung zu probieren versucht:
n = 100000
xx = np.random.uniform(-5, 5, n)
rho = mpl.pylab.normpdf(xx, 0, 1)
rnd = np.random.rand(n)
ix = np.where(rho > rnd)
xx = xx[ix]
h = plt.hist(xx, bins=20, normed=True)
# plot density
x = np.linspace(-5, 5, 100)
plt.plot(x, mpl.pylab.normpdf(x, 0, 1))
Es funktioniert und ich habe:
wenn ich nun die Dichte verändert, ich es nicht richtig abtasten. Ich habe überprüft, ob die Dichte gut normiert ist und es ist. So verstehe ich nicht, wo ich bin falsch
n = 100000
xx = np.random.uniform(0, 1, n)
rho = 2 * np.sin(2 * xx * np.pi)**2
rnd = np.random.rand(n)
ix = np.where(rho > rnd)
xx = xx[ix]
h = plt.hist(xx, bins=20, normed=True)
# plot density
x = np.linspace(0, 1, 100)
print(np.trapz(2 * np.sin(2 * x * np.pi)**2, x))
plt.plot(x, 2 * np.sin(2 * x * np.pi)**2)
Guten Fang auf dem ersten Beispiel nennen. Beide Beispiele hatten Fehler, aber der zweite ist auffälliger (und signifikanter). –
@ JohnColeman Ja, das ist richtig –