[To jest pytanie partnera, aby dokładnie obliczyć prawdopodobieństwo ]
To zadanie dotyczy pisania kodu w celu dokładnego i szybkiego obliczenia prawdopodobieństwa . Wynik powinien być precyzyjnym prawdopodobieństwem zapisanym jako ułamek w najbardziej zredukowanej formie. Oznacza to, że nigdy nie powinien generować, 4/8ale raczej 1/2.
Dla pewnej dodatniej liczby całkowitej n, rozważ jednolicie losowy ciąg 1s i -1s długości ni nazwij ją A. Teraz połączmy się do Ajej pierwszej wartości. To znaczy, A[1] = A[n+1]jeśli indeksowanie od 1. Ama teraz długość n+1. Teraz rozważ także drugi losowy ciąg długości, nktórego pierwsze nwartości to -1, 0 lub 1 z prawdopodobieństwem 1 / 4,1 / 2, 1/4 każdy i nazwij go B.
Rozważmy teraz wewnętrzną produkt A[1,...,n]oraz Bi wewnętrzną produkt A[2,...,n+1]i B.
Rozważmy na przykład n=3. Możliwe wartości Ai Bmogą być A = [-1,1,1,-1]i B=[0,1,-1]. W tym przypadku dwoma produktami wewnętrznymi są 0i 2.
Twój kod musi przedstawiać prawdopodobieństwo, że oba produkty wewnętrzne są równe zero.
Kopiując tabelę wyprodukowaną przez Martina Büttnera otrzymaliśmy następujące przykładowe wyniki.
n P(n)
1 1/2
2 3/8
3 7/32
4 89/512
5 269/2048
6 903/8192
7 3035/32768
8 169801/2097152
Języki i biblioteki
Możesz korzystać z dowolnego darmowego języka i bibliotek, które ci się podobają. Muszę być w stanie uruchomić Twój kod, więc proszę podać pełne wyjaśnienie, jak uruchomić / skompilować kod w systemie Linux, jeśli to w ogóle możliwe.
Zadanie
Twój kod musi zaczynać się od n=1i dawać poprawne dane wyjściowe dla każdego rosnącego nw osobnej linii. Powinno się zatrzymać po 10 sekundach.
Wynik
Wynik jest po prostu najwyższy nosiągnięty, zanim kod przestanie działać po 10 sekundach od uruchomienia na moim komputerze. W przypadku remisu zwycięzca najszybciej zdobędzie najwyższy wynik.
Tabela wpisów
n = 64w Pythonie . Wersja 1 autorstwa Mitcha Schwartzan = 106w Pythonie . Wersja z 11 czerwca 2015 r. Autor: Mitch Schwartzn = 151w C ++ . Odpowiedź Port of Mitch Schwartz autorstwa kirbyfan64sosn = 165w Pythonie . Wersja 11 czerwca 2015 r. W wersji „przycinanie” autorstwa Mitcha Schwartza zN_MAX = 165.n = 945w Pythonie przez Min_25 przy użyciu dokładnej formuły. Niesamowity!n = 1228w Pythonie autorstwa Mitcha Schwartza przy użyciu innej dokładnej formuły (na podstawie poprzedniej odpowiedzi Min_25).n = 2761w Pythonie autorstwa Mitcha Schwartza przy użyciu szybszej implementacji tej samej dokładnej formuły.n = 3250w Pythonie przy użyciu Pypy autorstwa Mitcha Schwartza przy użyciu tej samej implementacji. Ten wynik musipypy MitchSchwartz-faster.py |tailunikać przewijania konsoli nad głową.


