Pyth , 11 Bytes
WOyG~ZtOT)Z
Hinweis: Dieses Programm stürzt wahrscheinlich mit einem Speicherfehler auf einem realen Computer ab. Versuchen Sie zum Testen, durch G
eine kürzere Zeichenfolge zu ersetzen , z. B. in diesem Code, der Zahlen mit einem Durchschnitt von etwa 28000 generiert:
pyth -c 'WOy"abcdefghijklm"~ZtOUT)Z'
Dieser Code durchläuft eine Schleife und addiert eine Zufallszahl von -1 bis 8 Z
mit einer Wahrscheinlichkeit von 2 ^ -26, die Schleife bei jeder Wiederholung zu verlassen. Die 2 ^ -26 Wahrscheinlichkeit wird durch Auswahl eines zufälligen Elements ( O
) der Menge aller Teilmengen ( y
) des Alphabets (G
) erreicht.
Technische Details & Begründung:
Die Wahrscheinlichkeit 2 ^ -26 ergibt sich aus zwei Tatsachen: y
Wenn Sequenzen aufgerufen werden, ist dies die Potenzmengenfunktion, und es wird eine Liste aller Teilmengen der Eingabe erstellt. Da die Eingabe G
26 Zeichen lang ist, hat diese Potenzmenge yG
2 ^ 26 Einträge. OyG
wählt ein zufälliges Element aus diesen 2 ^ 26 Einträgen aus. Genau einer dieser Einträge, die leere Zeichenfolge, wird bei der Übergabe an als falsch bewertetW
die while-Schleife . Daher besteht jedes Mal eine Wahrscheinlichkeit von 2 ^ -26, die Schleife zu verlassen.
In jeder festen Anzahl von Schleifenzyklen K ist die Wahrscheinlichkeit, die Zahl K * 3,5 + m und K * 3,5 - m zu erhalten, gleich, weil jede Folge von Addenden, die eine Gesamtsumme erreicht, invertiert werden kann, -1 -> 8, 0 -> 7 usw., um den anderen zu erreichen. Zahlen, die näher an K * 3.5 liegen, sind deutlich wahrscheinlicher als weiter entfernte Zahlen. Wenn also K> 2000000 / 3.5 = 571428.5 ist, ist die Wahrscheinlichkeit, eine Zahl über 1000000 zu erhalten, größer als 75%, da einige der Ergebnisse über dieser Zahl in eine Eins-zu-Eins-Entsprechung mit allen Ergebnissen darunter gesetzt werden können Zahl und die obere Hälfte können in eine Eins-zu-Eins-Entsprechung mit denen unter 1000000 gestellt werden. Die Wahrscheinlichkeit, mindestens 571429 Schleifen zu erhalten, beträgt (1-2 ^ -26) ^ 571429, was nein ist weniger als (1-2 ^ -26 * 571429), Die erwartete Häufigkeit, mit der die Schleife während der ersten 571429 Versuche verlassen wird, ist 99,1%. Somit besteht bei 99,1% oder mehr der Versuche eine 75% ige oder größere Chance, mindestens 1000000 zu erhalten, und somit eine mehr als 50% ige Chance, über 1000000 zu gelangen.
Dieser Code basiert auf einem Verhalten, bei O
dem ein Fehler vor 3 Tagen versehentlich aufgetreten ist und das heute behoben wurde. Es sollte auf jeder Version von Pyth 3 vor dem 22. Dezember oder nach dem heutigen Tag funktionieren. Der folgende Code ist äquivalent und hat immer funktioniert:
WOyG~ZtOUT)Z