Для того, чтобы провести математическое моделирование для оценки ожидаемого расстояния между двумя случайными точками в $ n $ -мерном пространстве, я обнаружил, что следующие два похожих метода для генерации случайных точек кажутся разными. Я не могу понять, почему.Разница между двумя методами генерации случайных точек
Метод 1:
def expec_distance1(n, N = 10000):
u = uniform(0,1)
dist = 0
for i in range(N):
x = np.array([u.rvs() for i in range(n)])
y = np.array([u.rvs() for i in range(n)])
dist = (dist*i + euclidean_dist(x,y))/(i+1.0)
return dist
Способ 2:
def expec_distance2(n, N = 10000):
u = uniform(0,1)
dist = 0
for i in range(N):
x = u.rvs(n)
y = u.rvs(n)
dist = (dist*i + euclidean_dist(x,y))/(i+1.0)
return dist
, где равномерное распределение scipy.stats.uniform
и np
обозначает NumPy.
За 100 пробегов двух методов (при п = 2), с помощью метода 1, я получаю $ \ му = 0,53810011995126483, \ сигма = +0,13064091613389378 $ с методом 2, $ \ му = 0.52155615672453093, \ сигма = +0,0023768774304696902 $
Почему существует такая большая разница между std dev двух методов?
Вот код, чтобы попробовать: https://gist.github.com/swairshah/227f056e6acee07db6778c3ae746685b (я заменил SciPy с NumPy, причина его быстрее, но она имеет ту же разницу между стандом Dev)
связанные комментарии от первого ответа здесь: http://stats.stackexchange.com/questions/52909/how-to-find-the-expected -Расстояние-между-два-равномерно распределенные точки? Rq = 1. Но причина, по которой они разные, не предоставляется – swair
Можете ли вы опубликовать полный, исполняемый [SSCCE] (http://sscce.org/)? –
@MikeGraham добавил в сообщение. – swair