Я хочу проверить, находится ли случайная точка внутри нормального распределения или нет. Как видно из моего кода, я разделяю их разными цветами; однако результат неверен - критерием является то, что точка находится внутри или вне распределения, а затем раскрашивает ее соответствующим образом.
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
mu = 175
sigma = 10
xnormal = np.linspace(-3 * sigma + mu, 3 * sigma + mu, 1000)
xnormal = [int(x) for x in xnormal]
plt.plot(xnormal, stats.norm.pdf(xnormal, mu, sigma))
plt.axhline(y=0.04, color='r', linestyle='-')
N = 100
for i in range(N):
x = np.random.randint(145, 205)
y = np.random.uniform(0.0, 0.04)
if (y <= (xnormal.count(x)/1000)):
plt.scatter(x,y,None,'orange')
else:
plt.scatter(x,y,None,'b')
plt.show()
Что выводит программа:
Какой должен быть результат:
Небольшая проблема с индексацией:
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
#just inserted for reproducibility
np.random.seed(123)
mu = 175
sigma = 10
xnormal = np.linspace(-3 * sigma + mu, 3 * sigma + mu, 1000)
xnormal = [int(x) for x in xnormal]
ynormal = stats.norm.pdf(xnormal, mu, sigma)
plt.plot(xnormal, ynormal)
plt.axhline(y=0.04, color='r', linestyle='-')
N = 100
for i in range(N):
x = np.random.randint(145, 205)
y = np.random.uniform(0.0, 0.04)
if (y <= ynormal[xnormal.index(x)]):
plt.scatter(x,y,None,'orange')
else:
plt.scatter(x,y,None,'b')
plt.show()
Пример вывода: