Dalam teori probabilitas, distribusi normal (atau Gaussian) adalah distribusi probabilitas kontinu yang sangat umum. Distribusi normal penting dalam statistik dan sering digunakan dalam ilmu alam dan sosial untuk mewakili variabel acak bernilai nyata yang distribusinya tidak diketahui.
Tantangan
Tantangan Anda adalah memplot kerapatan probabilitas Distribusi Gaussian pada bidang 3 dimensi . Fungsi ini didefinisikan sebagai:
Dimana:
A = 1, σ x = σ y = σ
Aturan
- Program Anda harus mengambil satu input σ , standar deviasi.
- Program Anda harus mencetak plot 3D Distribusi Gaussian dengan kualitas terbaik sesuai bahasa / sistem Anda.
- Program Anda tidak boleh menggunakan Distribusi Gaussian langsung atau tingkat kemungkinan kepadatan.
- Program Anda tidak harus berakhir.
- Plot Anda mungkin hitam putih atau berwarna.
- Plot Anda harus memiliki garis kisi di bagian bawah. Garis kisi di sisi (seperti yang ditunjukkan dalam contoh) tidak perlu.
- Plot Anda tidak perlu memiliki nomor baris di sebelah garis kisi.
Mencetak gol
Seperti biasa dalam kode-golf , pengajuan dengan byte terkecil menang! Saya mungkin tidak pernah "menerima" jawaban menggunakan tombol, kecuali ada yang sangat kecil dan intuitif.
Contoh output
Output Anda dapat terlihat seperti ini:
Atau bisa terlihat seperti ini:
Jawaban:
Gnuplot 4,
6462616047 byte(Terikat dengan Mathematica ! WooHoo!)
Simpan kode di atas ke dalam file bernama
A.gp
dan jalankan dengan yang berikut ini:gnuplot -e 'call "A.gp" $1'>GnuPlot3D.png
di mana
$1
harus diganti dengan nilaiσ
. Ini akan menyimpan.png
file bernamaGnuPlot3D.png
berisi output yang diinginkan ke direktori kerja saat ini.Perhatikan bahwa ini hanya berfungsi dengan distribusi Gnuplot 4 karena dalam Gnuplot 5
$n
referensi ke argumen sudah tidak digunakan lagi dan diganti dengan yang sayangnya lebih bertele-teleARGn
.Output sampel dengan
σ = 3
:Output ini baik-baik saja menurut OP .
Gnuplot 4, Solusi Alternatif, 60 byte
Berikut ini adalah solusi alternatif yang jauh lebih lama dari yang sebelumnya tetapi hasilnya terlihat jauh lebih baik menurut saya.
Ini masih membutuhkan Gnuplot 4 untuk alasan yang sama dengan solusi sebelumnya.
Output sampel dengan
σ = 3
:sumber
I am not sure if it molds to the specifications required
spesifikasi apa yang menurut Anda tidak memenuhi?Gnuplot
akan memplot kepadatan probabilitas distribusi Gaussian dengan Sigma2
tanpa modifikasi lingkungan.C ++,
34773344 bytesHitungan byte tidak termasuk baris baru yang tidak perlu.
MD XF bermain golf 133 byte.
Tidak mungkin C ++ dapat bersaing untuk ini, tetapi saya pikir akan menyenangkan untuk menulis perender perangkat lunak untuk tantangan ini. Saya merobek dan memutarkan beberapa potongan GLM untuk matematika 3D dan menggunakan algoritma garis Xiaolin Wu untuk rasterisasi. Program menampilkan hasilnya ke file PGM bernama
g
.l
adalah panjang satu sisi grid di ruang dunia.c
adalah jumlah simpul di sepanjang setiap tepi grid.x
danz
(+ y naik) dari titik, dan mengembalikan posisi ruang dunia dari titik.w
adalah lebar pgmh
adalah ketinggian pgmm
adalah view / projection matrix. Argumen yang digunakan untuk membuatm
adalah ...Penyaji dapat dengan mudah memiliki lebih banyak fitur, kinerja yang lebih baik, dan bermain golf yang lebih baik, tetapi saya bersenang-senang!
sumber
Mathematica, 47 byte
mengambil input σ
Memasukkan
keluaran
-2 byte terima kasih kepada LLlAMnYP
sumber
E^(-(x^2+y^2)/2/#^2)
R,
1051028786 byteMembawa Sigma dari STDIN. Membuat vektor dari
-6
ke6
dalam langkah-langkah.1
untuk keduanyax
dany
,kemudian membuat121x121
matriks dengan mengambil produk luarx
dany
. Ini lebih pendek daripada memanggilmatrix
dan menentukan dimensi. Matriks sekarang sudah diisi, tapi tidak apa-apa, karena kita menimpanya.Thefor
loop -loop atas nilai-nilai dalamx
, memanfaatkan operasi Vectorized diR
, menciptakan kepadatan matriks satu baris pada suatu waktu.(s)apply
lagi adalah metode yang lebih pendek untuk operasi vektor. Seperti pahlawannya, ia menangani pembuatan matriks dengan sendirinya, menghemat beberapa byte.128125110109 byte, tetapi jauh lebih mewah:Plot ini dibuat oleh
plotly
paket. Sayangnya spesifikasi agak bertele-tele, jadi ini biaya banyak byte. Hasilnya sungguh sangat mewah. Saya sangat merekomendasikan untuk mencobanya sendiri.sumber
plotly
plotnya cukup mewah untuk menjamin masih dimasukkan di sini.s
sekali, dapatkah Anda melakukan2*scan()^2
dan menghapuss=scan();
di awal? Ini akan menghemat 3 byte.Applesoft BASIC,
930783782727719702695637 byte-72 byte dan program kerja berkat ceilingcat melihat kesalahan saya dan algoritma yang dipersingkat
Versi tidak dikolomasikan di sini.
Saat diberi input
1
:Saat diberi input
2
:sumber
EXP(X)/(2*3.14159*S1*S1)
denganEXP(X)*M