Ich versuche ein Lotterieprogramm für meine Schule zu machen (wir haben ein Wirtschaftssystem).
Mein Programm erzeugt Zahlen und speichert sie in einer Textdatei ab. Wenn ich Zahlen aus meinem Generator "ziehen" will, möchte ich sicherstellen, dass es einen Gewinner gibt.
F: Wie wähle ich Python eine zufällige Zeile aus meiner Textdatei und gebe meine Ausgabe als diese Nummer?
Wenn die Datei sehr groß ist, können Sie an einer zufälligen Stelle in der Datei nach der Dateigröße suchen und dann die nächste vollständige Zeile erhalten:
%Vor%Obwohl die meisten der hier aufgeführten Ansätze funktionieren würden, laden sie die gesamte Datei jedoch auf einmal in den Speicher. Aber nicht dieser Ansatz. Selbst wenn die Dateien groß sind, würde das funktionieren.
Der Ansatz ist auf den ersten Blick nicht sehr intuitiv. Der Theorem dahinter besagt, dass, wenn wir N Linien in dort gesehen haben, eine Wahrscheinlichkeit von genau 1 / N ist, dass jede von ihnen so weit ausgewählt ist.
Mit einer geringfügigen Änderung Ihrer Eingabedatei (speichern Sie die Anzahl der Elemente in der ersten Zeile) können Sie eine Nummer einheitlich auswählen, ohne zuerst die gesamte Datei im Speicher lesen zu müssen.
%Vor%Sagen Sie, Sie haben 100 Nummern. Die Wahrscheinlichkeit, die erste Zahl zu wählen, beträgt 1/100. Die Wahrscheinlichkeit, die zweite Zahl zu wählen, ist (99/100) (1/99) = 1/100. Die Wahrscheinlichkeit, die dritte Zahl zu wählen, ist (99/100) (98/99) (1/98) = 1/100. Ich werde den formalen Beweis überspringen, aber die Wahrscheinlichkeit, eine der 100 Zahlen zu wählen, ist 1/100.
Es ist nicht unbedingt notwendig, die Anzahl in der ersten Zeile zu speichern, aber es erspart Ihnen die Mühe, die gesamte Datei lesen zu müssen, nur um die Zeilen zu zählen. In jedem Fall müssen Sie nicht die gesamte Datei im Speicher ablegen, um mit der gleichen Wahrscheinlichkeit eine einzelne Zeile auszuwählen.
ein anderer Ansatz:
%Vor%Verteilung:
%Vor%Ich sehe die Skewne nicht, aber vielleicht ist der Datensatz zu klein ...
Ich habe Python-Tutorials gesehen und dieses Snippet gefunden:
%Vor%Tags und Links python random file python-3.3