Ankündigung

Einklappen
Keine Ankündigung bisher.

Zufallsauswahl programmieren ??

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zufallsauswahl programmieren ??

    Hallo

    Ich habe eine Frage.
    Ich habe eine einfache text-Datei, diese Datei hat n Zeilen. Nun möchte ich 50% dieser Zeilen zufällig auswählen. Am liebsten wäre mir, es ginge mit der Shell. Wie mache ich das am besten? Wäre schön, wenn mir da jemand helfen könnte.

    Grüße Floore

  • #2
    kommt auf dein System an. Welche Shell? Perl installiert? Wenn ja:

    #!/usr/bin/perl -w

    my ($file) = @ARGV;
    open(FHANDLER, "<$file") or die "File $file cannot be found!";
    my @lines = <FHANDLER>;
    for(my $i = 0; $i <= $#lines/2; $i++) {
    print "$lines[int(rand($#lines))]";
    }
    als Datei abspeichern, ausführbar machen und zusammen mit der gewünschten Datei als Parameter aufrufen (edit: die erste Zeile musst du natürlich anpassen wenn du kein unix/linux System hast).
    Zuletzt geändert von TheJoker; 08.09.2008, 12:45.
    "Wer Sicherheit der Freiheit vorzieht ist zu Recht ein Sklave"
    (Aristoteles 384 v.Chr. - 322 v.Chr.)

    Kommentar


    • #3
      Vielen Dank. Es hat zwar etwas gedauert, weil ich Perl noch nie benutzt habe, aber jetzt funktioniert es.

      Kommentar


      • #4
        bitte. Du musst noch bedenken, das hier n-mal Zufallszahlen gezogen werden, es ist dabei nicht ausgeschlossen das eine Zufallszahl mehrfach vorkommt. Wenn das nicht sein darf kann ich dir das gerne anpassen.
        "Wer Sicherheit der Freiheit vorzieht ist zu Recht ein Sklave"
        (Aristoteles 384 v.Chr. - 322 v.Chr.)

        Kommentar


        • #5
          Zitat von TheJoker Beitrag anzeigen
          bitte. Du musst noch bedenken, das hier n-mal Zufallszahlen gezogen werden, es ist dabei nicht ausgeschlossen das eine Zufallszahl mehrfach vorkommt. Wenn das nicht sein darf kann ich dir das gerne anpassen.
          Das habe ich mir auch überlegt. Für dieses Mal ist es kein Problem, aber wenn es dir nichts ausmacht, würde ich die Variante auch gerne sehen. Es kommt häufiger vor, dass ich Zufallsauswahlen treffen muss.

          Kommentar


          • #6
            Code:
            #!/usr/bin/perl
            
            my ($file) = @ARGV;
            open(FHANDLER, "<$file") or die "File $file cannot be found!"; 
            my @lines = <FHANDLER>;
            my %used = ();
            my $percent = 0.5; #1 = 100%, 0.5 = 50%, 0 = 0%
            
            if($percent <=1) {
            for(my $i = 0; $i < $#lines*$percent; $i++) {
              my $randomNumber = int(rand($#lines));
              redo if (exists $used{$randomNumber});
              $used{$randomNumber}=1;
              print "$lines[$randomNumber]";
            }
            } else {
              print "Percent rate is to high!\n";
            }
            hab dir auch noch einen Regel für den gewünschten Prozentsatz eingebaut.
            "Wer Sicherheit der Freiheit vorzieht ist zu Recht ein Sklave"
            (Aristoteles 384 v.Chr. - 322 v.Chr.)

            Kommentar


            • #7
              Das wird in Zukunft sicher sehr hilfreich sein. Ich kann es zwar gerade nicht ausprobieren, da auf meinem Heim-PC kein Perl installiert ist. Ich werde es aber gleich morgen im Büro ausprobieren.

              Vielen, vielen Dank für deine Hilfe.

              Kommentar

              Lädt...
              X