Jeśli masz zamiar wymyślić fałszywe wiadomości, zechcesz sfabrykować niektóre dane, aby je utworzyć. Musisz już mieć pewne z góry ustalone wnioski i chcesz, aby niektóre statystyki wzmocniły argumenty o swojej wadliwej logice. To wyzwanie powinno ci pomóc!
Biorąc pod uwagę trzy liczby wejściowe:
- N - liczba punktów danych
- μ - średnia punktów danych
σ - standardowe odchylenie punktów danych, gdzie μ i σ są podane przez:
Wyprowadza nieuporządkowaną listę liczb 𝑥 i , która wygenerowałaby dane N , μ i σ .
Nie będę zbyt wybredny co do formatów I / O, ale oczekuję pewnego rodzaju miejsc po przecinku dla μ , σ i punktów danych wyjściowych. Jako minimum należy wspierać co najmniej 3 znaczące liczby i wielkość co najmniej 1 000 000. Pływaki IEEE są w porządku.
- N zawsze będzie liczbą całkowitą, gdzie 1 ≤ N ≤ 1000
- μ może być dowolną liczbą rzeczywistą
- σ zawsze będzie wynosić ≥ 0
- punktami danych może być dowolna liczba rzeczywista
- jeśli N wynosi 1, to σ będzie zawsze wynosić 0.
Zauważ, że większość wejść będzie miała wiele możliwych wyników. Musisz podać tylko jeden prawidłowy wynik. Wynik może być deterministyczny lub niedeterministyczny.
Przykłady
Input (N, μ, σ) -> Possible Output [list]
2, 0.5, 1.5 -> [1, 2]
5, 3, 1.414 -> [1, 2, 3, 4, 5]
3, 5, 2.160 -> [2, 6, 7]
3, 5, 2.160 -> [8, 4, 3]
1, 0, 0 -> [0]
źródło
+ve
i co-ve
oznacza?Odpowiedzi:
Pyth ,
443534 bajtówWypróbuj online! (Powyższy kod definiuje funkcję.
:.*
Jest dodawany do łącza w celu wywołania funkcji).Matematyka
Konstruuje to dane symetrycznie. Jeśli
N
jest parzyste, to dane są tylko średnią plus lub minus odchylenie standardowe. Jeśli jednakN
jest nieparzyste, właśnie otworzyliśmy puszkę robaków, ponieważ średnia musi być obecna, aby dane były symetryczne, a więc fluktuacje należy pomnożyć przez pewien współczynnik.Jeśli
n
jest parzystyμ+σ
.μ-σ
.Jeśli
n
jest dziwneμ
.μ+σ*sqrt(n/(n-1))
.μ-σ*sqrt(n/(n-1))
.źródło
MATL , 22 bajty
Dzięki @DigitalTrauma za korektę.
Kolejność wejściowy jest:
N
,σ
,μ
.Wypróbuj online!
Lub zobacz zmodyfikowaną wersję, która oblicza również średnią i standardowe odchylenie wytworzonych danych, jako kontrolę.
Wyjaśnienie
Kod podzielony jest na cztery części:
:
generuje tablicę, w[1 2 ... N]
którejN
przyjmuje się jako niejawne dane wejściowe.t&1Zs/
dzieli te liczby przez ich empiryczne odchylenie standardowe (obliczone przez normalizacjęN
) itYm-
odejmuje średnią empiryczną uzyskanych wartości. Zapewnia to, że wyniki mają średnią0
empiryczną i empiryczne odchylenie standardowe1
.*
mnoży się przezσ
i+
dodajeμ
, oba wzięte jako dane niejawne.tZN?x3G
obsługuje szczególny przypadek, żeN = 1
,σ = 0
dla których wyjście powinno byćμ
. Jeśli tak rzeczywiście jest, to empiryczne odchylenie standardowe obliczone w drugim etapie było0
, podział dałinf
, a pomnożenie przezσ
w trzecim kroku dałNaN
. Tak więc kod działa: jeśli uzyskana tablica zawiera wszystkieNaN
wartości (kodtZN?
), usuń ją (x
) i wciśnij trzecie wejście (3G
), które jestμ
.źródło
Python , 50 bajtów
Wypróbuj online!
Używa następującego
n
rozkładu -elementów ze średnią0
i sdev1
:1/n
(tj.1
Elementem) wyjście(n-1)**0.5
1-1/n
(tj.n-1
Elementy), wyjście-(n-1)**(-0.5)
Przekształca się to na średnie
m
i sdevs
poprzez transformacjęx->m+s*x
. Irytujące,n=1
daje błąd dzielenia przez zero dla bezużytecznej wartości, więc hakujemy go, wykonując/(n-1%n)**.5
,1%n
dając0
zan==1
i1
nie.Można by pomyśleć, że
(n-1)**.5
można go skrócić~-n**.5
, ale potęgowanie następuje najpierw.A
def
jest o jeden bajt dłuższy.źródło
R,
836253 bajtyJeśli
n=1
, to zwracam
(ponieważscale
wróciłobyNA
), w przeciwnym razie skaluje dane,[1,...,n]
aby uzyskać średnią 0 i (próbka) odchylenie standardowe 1, więc mnoży przez,s*sqrt(1-1/n)
aby uzyskać prawidłowe odchylenie standardowe populacji, i dodajem
do przesunięcia do odpowiedniej średniej. Dzięki Dason za zapoznanie mnie z funkcją skalowania i usunięcie tych bajtów!Wypróbuj online!
źródło
1:n
zamiastrt(n,n)
zapisać 4 bajty. Tascale
funkcja może być prawdopodobnie przydatna.scale
co jest świetne.Galaretka , 20 bajtów
Wypróbuj online!
Pełny program przyjmujący trzy argumenty wiersza poleceń: n , μ , σ .
W jaki sposób?
Tworzy wartości podłogi (n / 2) w równej odległości od średniej i wartości średniej, jeśli n jest nieparzyste, tak że odchylenie standardowe jest prawidłowe ...
źródło