Biorąc pod uwagę serię liczb dla zdarzeń X i Y, oblicz współczynnik korelacji Pearsona. Prawdopodobieństwo każdego zdarzenia jest równe, więc oczekiwane wartości można obliczyć, po prostu sumując każdą serię i dzieląc przez liczbę prób.
Wejście
1 6.86
2 5.92
3 6.08
4 8.34
5 8.7
6 8.16
7 8.22
8 7.68
9 12.04
10 8.6
11 10.96
Wynik
0.769
Najkrótszy kod wygrywa. Dane wejściowe mogą być stdin lub arg. Wyjście będzie według standardowego wyjścia.
Edycja: Wbudowane funkcje nie powinny być dozwolone (tj. Obliczona oczekiwana wartość, wariancja, odchylenie itp.), Aby umożliwić większą różnorodność rozwiązań. Zapraszam jednak do zademonstrowania języka, który jest dobrze dopasowany do zadania, za pomocą wbudowanych funkcji (na wystawę).
Na podstawie pomysłu Davida dotyczącego danych wejściowych dla Mathematica (86 znaków przy użyciu wbudowanej średniej)
m=Mean;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/Sqrt[(m@(x^2)-m@x^2)(m@(y^2)-m@y^2)]
m = Mean;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y) - m@x*m@y)/((m@(x^2) - m@x^2)(m@(y^2) - m@y^2))^.5
Cokół za pomocą naszego własnego środka (101 znaków)
m=Total[#]/Length[#]&;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5
m = Total[#]/Length[#]&;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5
m=Total@#/Length@#&