Ankündigung

Einklappen
Keine Ankündigung bisher.

nicht doppelte zufallszahlen

Einklappen

Neue Werbung 2019

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

  • nicht doppelte zufallszahlen

    Hallo zusammen!

    Ich wollte ein Script schreiben, welches mir zwischen 20 und 50 Zufallszahlen ausgibt, von denen aber keine doppelt vorkommen darf.

    Die erste For-Schleife checkt ob schon genug Zufallszahlen vorhanden sind.
    Dann wird innerhalb der While-Schleife eine neue Zufallszahl erzeugt.
    Im nächsten For wird überprüft, ob in dem Array der nicht doppelten Zufallszahlen die soeben erzeugte Zufallszahl schon vorhanden ist. Wenn ja, kommt die Bedingung der While-Schleife zum Tragen, wenn nein, dann wird die While-Schleife verlassen und die nicht doppelte Zufallszahl in das Array gespeichert.
    Schließlich möchte ich alle gefundenen Zufallszahlen ausgeben lassen.

    So zumindest der Plan.

    Da ich noch nicht lange, bzw. nicht intensiv, mit Php arbeite vermute ich es handelt sich um einen Fehler mit dem Array, konnte aber nicht finden, was das Problem ist.

    Code:
    $howOftenBreak = rand(20,50);
    							
    							$whereBreak = array();
    							$whereBreakLength = count($whereBreak);
    							
    							for ($b=0; $b<$howOftenBreak; $b++){
    									$break = false;
    									while ($break == false){
      									$breakPoint = rand(0,130);
      									$break = true;
      									for ($a=0; $a<$whereBreakLength; $a++){  
      											if ($breakPoint == $whereBreak[$a]){
      											$break = false;
      											}
      									}
    $whereBreak[] = $breakPoint;
    									}
    							}							
    							for ($c=0; $c<$whereBreakLength; $c++){
    							echo $whereBreak[$c];
    							}
    Deshalb bitte ich hiermit um Hilfe. Hoffentlich kann mir jemand sagen, wo der Bug steckt.
    Danke im Vorraus,
    k.

  • #3
    hmm...danke für den Codeschnipsel. Mich würde trotzdem noch interessieren, was an meinem Selbstgeschriebenem nicht funktioniert.

    Ich habe in meinem Topic vergessen zu schreiben was da eigentlich nicht klappt . Das Skript läuft ohne Problem, aber es gibt absolut nichts aus.

    Vielen Dank im Vorraus,
    k.

    Kommentar


    • #4
      Das Skript läuft ohne Problem, aber es gibt absolut nichts aus.
      schlimmer gehts nimmer.... dümmer immer!
      [url=http://www.in-dvd.net][img]http://in-dvd.net/images/go_indvd.gif[/img][/url]

      Kommentar


      • #5
        Zitat von search
        Das Skript läuft ohne Problem, aber es gibt absolut nichts aus.
        ohne eine Fehlermeldung auszuspucken meinte ich na klar

        Kommentar


        • #6
          PHP-Code:
          <?php
          error_reporting
          (E_ALL);

          $howOftenBreak rand(20,50);
          $whereBreak = array();
          # $whereBreakLength = count($whereBreak);

          for ($b=0$b<$howOftenBreak$b++){
              
          $break false;
              while (
          $break == false){
               
          $breakPoint rand(0,130);
               
          $break true;
               
          # for ($a=0; $a<$whereBreakLength; $a++){ 
               # if ($breakPoint == $whereBreak[$a]){
               # $break = false;
               # }
               # }
          $whereBreak[] = $breakPoint;
              }
          }

          for (
          $c=0$c count($whereBreak); $c++){ 
          echo 
          $whereBreak[$c].' '
          }

          ?>
          EDIT:

          Wobei das Script etwas umständlich geschrieben ist.

          PHP-Code:
          <?php
          $numbers 
          range (2050);
          mt_srand ((float)microtime()* 500000);
          shuffle ($numbers); 
          foreach (
          $numbers as $v) echo $v.' ';
          ?>

          Kommentar


          • #7
            Ahjo...danke schon mal.

            Was bedeutet die orange Markierung in deinem Quelltext-Ausschnitt?

            Ich kannte weder den foreach- noch den range-Befehl. Danke.
            Mit mt_srand erzeugst du also eine Zufallszahl die als Basis die jeweils momentane Zeit nimmt?
            Aber wie werden die Zufallszahlen in dem unteren Codebeispiel jeweils in das Array geschrieben um dann gemischt und ausgegeben zu werden?


            k.

            Kommentar

            Lädt...
            X