[Dies ist eine Partnerfrage, um eine Wahrscheinlichkeit genau zu berechnen ]
Bei dieser Aufgabe geht es darum, Code zu schreiben, um eine Wahrscheinlichkeit genau und schnell zu berechnen . Die Ausgabe sollte eine genaue Wahrscheinlichkeit sein, die als Bruch in ihrer am meisten reduzierten Form geschrieben wird. Das heißt, es sollte nie ausgegeben werden 4/8, sondern 1/2.
nBetrachten Sie für eine positive Ganzzahl eine gleichmäßig zufällige Zeichenfolge mit einer Länge von 1s und -1s nund nennen Sie sie A. Verketten Sie nun mit Aihrem ersten Wert. Das heißt, A[1] = A[n+1]wenn die Indizierung von 1. Ajetzt Länge hat n+1. Nun auch eine zweite zufällige Zeichenfolge der Länge betrachten , nderen erste nWerte -1, 0 oder 1 , mit einer Wahrscheinlichkeit von 1 / 4,1 / 2, 1/4 und jedes nennen es B.
Betrachten Sie nun das innere Produkt von A[1,...,n]und Bund das innere Produkt von A[2,...,n+1]und B.
Betrachten Sie zum Beispiel n=3. Mögliche Werte für Aund Bkönnten A = [-1,1,1,-1]und sein B=[0,1,-1]. In diesem Fall sind die beiden inneren Produkte 0und 2.
Ihr Code muss die Wahrscheinlichkeit ausgeben, dass beide inneren Produkte Null sind.
Wenn wir die von Martin Büttner erstellte Tabelle kopieren, erhalten wir die folgenden Beispielergebnisse.
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
Sprachen und Bibliotheken
Sie können jede frei verfügbare Sprache und Bibliothek verwenden, die Sie mögen. Ich muss in der Lage sein, Ihren Code auszuführen. Bitte geben Sie eine vollständige Erklärung an, wie Sie Ihren Code unter Linux ausführen / kompilieren können, wenn dies überhaupt möglich ist.
Die Aufgabe
Ihr Code muss mit beginnen n=1und die richtige Ausgabe für jedes zunehmende n in einer separaten Zeile angeben. Es sollte nach 10 Sekunden aufhören.
Die Punktzahl
Die Punktzahl ist einfach die höchste, die nerreicht wird, bevor Ihr Code nach 10 Sekunden auf meinem Computer stoppt. Wenn es ein Unentschieden gibt, ist der Gewinner derjenige, der am schnellsten die höchste Punktzahl erreicht.
Tabelle der Einträge
n = 64in Python . Version 1 von Mitch Schwartzn = 106in Python . Version 11. Juni 2015 von Mitch Schwartzn = 151in C ++ . Port of Mitch Schwartz 'Antwort von kirbyfan64sosn = 165in Python . Version 11. Juni 2015 die "Schnitt" -Version von Mitch Schwartz mitN_MAX = 165.n = 945in Python von Min_25 mit einer genauen Formel. Tolle!n = 1228in Python von Mitch Schwartz unter Verwendung einer anderen exakten Formel (basierend auf der vorherigen Antwort von Min_25).n = 2761in Python von Mitch Schwartz mit einer schnelleren Implementierung derselben exakten Formel.n = 3250in Python mit Pypy von Mitch Schwartz mit der gleichen Implementierung. Diese Punktzahl musspypy MitchSchwartz-faster.py |tailvermeiden, dass die Konsole über den Bildlauf blättert.


