Jarak rata-rata dua titik dalam satuan n-dimensi hypercube

13

Cara mudah untuk memahami hypercube unit n-dimensional adalah dengan mempertimbangkan wilayah ruang dalam n dimensi yang bisa Anda dapatkan jika setiap komponen koordinat terletak pada [0, 1]. Jadi untuk satu dimensi itu adalah segmen garis dari 0 hingga 1, untuk dua dimensi adalah kuadrat dengan sudut (0, 0) dan (1, 1), dll.

Tulis program atau fungsi yang diberikan n mengembalikan jarak Euclidean rata-rata dari dua titik yang dipilih secara acak dari unit hipcube dimensi-n. Jawaban Anda harus dalam 10 -6 dari nilai aktual. Tidak apa-apa jika jawaban Anda melebihi jenis floating point asli bahasa Anda untuk n besar.

Secara acak memilih jumlah poin yang besar dan menghitung rata-rata tidak menjamin keakuratan tersebut.

Contoh:

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

Data diperoleh dari MathWorld .

Ini adalah , kemenangan byte-count terendah.

orlp
sumber
Menegaskan kriteria kemenangan dalam edit.
Magic Octopus Mm
Hanya untuk menjadi jelas: jarak mengacu pada jarak Euclidean, ya?
Dennis
3
@carusocomputing Apa gunanya tantangan jika Anda ingin saya menyelesaikannya untuk Anda?
orlp
4
@orlp mendaftarkan keberatan saya pada tantangan yang merupakan teka-teki matematika sampai seseorang menghitung matematika, maka itu menjadi teka-teki pemrograman ketika semua orang menyalin rumus dalam bahasa yang berbeda. Saya perlu mengajukan pertanyaan meta tentang ini.
Sparr
1
Ketika Anda mengatakan 5 digit akurasi, apakah maksud Anda dalam 1e-5, atau akankah perkiraan 1,500000000000001 salah ketika outputnya menjadi 1,49999999999999999?
xnor

Jawaban:

5

Mathematica, 68 byte

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

Implementasi formula menggunakan NIntegrateuntuk memperkirakan nilainya.

Gambar

mil
sumber
Kalahkan saya dengan 58 detik :(
JungHwan Min
Di mana Anda menemukan formula itu?
feersum
@feersum Ini rumus (8) dari Hypercube Line Picking . (10) adalah kesalahan ketik dan seharusnya tidak memiliki integral atau ganda.
mil
Jika Anda benar-benar memasukkan ini sebagai teks itu diurai u√πsebagai satu token, jadi Anda perlu spasi di antara udan .
feersum