So wählen Sie eine zufällige Zeile aus einer Textdatei aus

8

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?

    
Suit Boy Apps 17.02.2013, 18:48
quelle

7 Antworten

15
  

Wie kann ich Python eine zufällige Zeile aus meiner Textdatei auswählen und meine Ausgabe als diese Nummer geben?

Unter der Annahme, dass die Datei relativ klein ist, ist das Folgende vielleicht der einfachste Weg:

%Vor%     
NPE 17.02.2013, 18:50
quelle
9

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%     
Ali-Akber Saifee 18.02.2013 22:52
quelle
4
%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.

Von Seite Nr. 123 von 'Python Cookbook '

    
iankit 23.02.2016 13:41
quelle
2

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.

    
chepner 17.02.2013 19:07
quelle
2

Aus der Spitze meines Kopfes:

%Vor%     
Srdjan Grubor 17.02.2013 18:53
quelle
1

ein anderer Ansatz:

%Vor%

Verteilung:

%Vor%

Ich sehe die Skewne nicht, aber vielleicht ist der Datensatz zu klein ...

    
Fredrik Pihl 17.02.2013 18:58
quelle
-1

Ich habe Python-Tutorials gesehen und dieses Snippet gefunden:

%Vor%     
Suit Boy Apps 20.02.2013 04:13
quelle

Tags und Links