Середня відстань двох точок в одиничній n-мірній гіперкубі


13

Найпростіший спосіб зрозуміти одиничний n-мірний гіперкуб - розглянути область простору в n розмірах, яку ви можете отримати, якщо кожен компонент координат лежить у [0, 1]. Отже, для одного виміру це відрізок лінії від 0 до 1, для двох вимірів - це квадрат з кутами (0, 0) та (1, 1) тощо.

Напишіть програму або функцію, яка задана n повертає середню евклідову відстань у дві точки, рівномірно випадкові, вибрані з одиниці n-розмірного гіперкуба. Ваша відповідь повинна бути в межах 10 -6 від фактичного значення. Це нормально, якщо ваша відповідь переповнює тип рідкої плаваючої точки вашої мови для великих n.

Випадковий вибір "великої" кількості балів та обчислення середнього не гарантує такої точності.

Приклади:

1 → 0.3333333333 ...
2 → 0.5214054331 ...
3 → 0.6617071822 ...
4 → 0.7776656535 ...
5 → 0.8785309152 ...
6 → 0.9689420830 ...
7 → 1.0515838734 ...
8 → 1.1281653402 ...

Дані, отримані від MathWorld .

Це , виграє найменший байт.


У редакції підтверджено критерій виграшу.
Magic Octopus Urn

Просто, щоб було зрозуміло: відстань відноситься до евклідової відстані, так?
Денніс

3
@carusocomputing У чому полягає проблема, якщо ти хочеш, щоб я вирішив це за тебе?
orlp

4
@orlp, зареєструвавши моє заперечення проти виклику, який є математичною головоломкою, поки хтось не з'ясує математику, тоді вона стане головоломкою програмування, коли всі копіюють формулу на різних мовах. Мені потрібно поставити мета питання з цього приводу.
Спарр

1
Якщо ви говорите 5 цифр точності, ви маєте на увазі значення в межах 1е-5, ​​або якщо оцінка в 1,500000000000001 помиляється, коли вихід повинен бути 1,499999999999999?
xnor

Відповіді:


5

Математика, 68 байт

NIntegrate[(1-((E^-u^2+u*Erf@u√π-1)/u^2)^#)/u^2,{u,0,∞}]/√π&

Реалізація формули, використовуючи NIntegrateдля наближення її значення.

Зображення


Побийте мене на 58 секунд :(
JungHwan Min

Де ви знайшли формулу?
feersum

@feersum Формула (8) від Hypercube Line Picking . (10) - помилка друку і не повинна мати подвійного інтеграла або ду.
миль

Якщо ви насправді вводите це як текст, він розбирається u√πяк один маркер, значить, вам знадобиться пробіл між uі .
feersum
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.