array_rand Bug? oder mach ich was falsch

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

  • array_rand Bug? oder mach ich was falsch

    PHP-Code:
    <?
    for($i=0;$i<1000;$i++){
        $a[] =a;
    }
    for($i=0;$i<=100000;$i++){
        $x = array_rand($a);
        $xy[$x] +=1;
        #echo $x."\n";
    }
    #ksort ($xy);
    #print_r($xy);

    echo "\n Count 1:".count($xy) ." Summe: ". array_sum($xy);

    echo "\n Count 2:".count($a);
    ?>
    ausgabe:

    Code:
     Count 1:61 Summe: 100001
     Count 2:1000
    Ich lasse ein Array erstellen mit 1000 einträgen ( Count 2:1000) und will daraus eine zuffals Key haben. So weit so gut. Er erstellt mir ein Array mit 1000 Einträgen. Gibt mir aber nur von 61 was aus. Wenn ich mit Print_r nun anzeigen lasse welche eintrage ausgewählt wurde und wie oft dann kommt

    [...]
    [553] => 1613
    [436] => 1613
    [674] => 1613
    [794] => 3226
    [288] => 1613
    [215] => 1613
    [589] => 1613
    [321] => 1613
    [715] => 1613
    [441] => 1613
    [869] => 1613
    [834] => 1613
    [373] => 1613
    [353] => 1613
    [585] => 1613
    [376] => 1613
    [...]
    [719] => 1612
    [...]


    PHP Version 4.3.9

    Ist das ein Bug oder mach ich was falsch?
    Mafia Browsergame - Scripts

    Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
    Albert Schweitzer (14.01.1875 - 04.08.1965)

  • #2
    Re: array_rand Bug? oder mach ich was falsch

    Original geschrieben von garyx7de
    PHP-Code:
    <?
    for ($i = 0; $i < 1000; $i++)
    {
        $a[] = $a;
    }
    ?>
    Vielleicht besser so?
    PHP-Code:
    <?
    for ($i = 0; $i < 1000; $i++)
    {
        $a[] = $i;
    }
    ?>
    PHP-Code:
    $xy[$x] +=1
    Und wofür ist das???

    Was genau willst du überhaupt machen, dieser Code hat keinen Sinn, poste doch mal den "richtigen" Verwendungszweck!

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Den richtigen kann ich ned posten (ist das Kampfscript von meinem Game.

      $xy[$x] +=1;

      wie oft $x aufgerufen wurde (;

      Mafia Browsergame - Scripts

      Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
      Albert Schweitzer (14.01.1875 - 04.08.1965)

      Kommentar


      • #4

        Beim googeln nach der Funktion array_rand() bin ich darauf gestoßen:

        void srand ( int seed)

        Legt einen internen Startwert für den Zufallsgenerator in rand() fest. Gleiche Startwerte führen auch jeweils zu derselben Pseudo-Zufallssequenzen daher ist es üblich, diese über die aktuelle Uhrzeit festzulegen:

        Kommentar


        • #5
          Original geschrieben von DSB
          Beim googeln nach der Funktion array_rand() bin ich darauf gestoßen: [...]
          dann stoße doch bitte auch noch mal auf
          Anmerkung: Seit PHP 4.2.0 besteht keine Notwendigkeit mehr, den Zufallsgenerator für Zahlen mit srand() oder mt_srand() zu füttern, das geschieht nun automatisch.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Ah, das stnad nciht auf der Seite aber man lernt ja nie aus.
            Fragt sich jetzt nur welche PHP-Version er hat.

            Kommentar


            • #7
              <?
              for ($i = 0; $i < 1000; $i++)
              {
              $a[] = $a;
              }
              ?>
              ...na den möchte ich gerne mal sehen
              hat jemand bock den mal laufen zu lassen und mir nen var_dump zu schicken? am besten auf dvd...
              eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

              Kommentar


              • #8
                Original geschrieben von slarti
                ...na den möchte ich gerne mal sehen
                hat jemand bock den mal laufen zu lassen und mir nen var_dump zu schicken? am besten auf dvd...
                gibt keine Endlosschleife, sondern nur einen Haufen PHP Warnings und ein Array mit 1000 Feldern, wo 1000 unitialisierte Werte drin ist....wofür brauchst du bei 1000 Fehlermeldungen die DVD doch gleich?

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Original geschrieben von DSB
                  Ah, das stnad nciht auf der Seite aber man lernt ja nie aus.
                  Fragt sich jetzt nur welche PHP-Version er hat.
                  First thing you search in, everytime, for every reason: http://www.php.net/manual/de

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    hehe... slarti & ghostgambler:
                    hab vorher $a = array(0); bestimmt, damit's keine warnings gibt und die schleife von 0 bis 10 laufen lassen. print_r erzeugte 191 kb ausgabe!

                    als ich die schleife 100 mal laufen lassen wollte, musste ich das experiment abbrechen, als die swap-datei von 240 auf 820 mb wuchs!

                    könnt ihr in etwa schätzen, was passieren würde, wenn bei dem exponentiellen wachstum die schleife 1000 mal laufen würde?

                    Kommentar


                    • #11
                      Original geschrieben von penizillin
                      hehe... slarti & ghostgambler:
                      hab vorher $a = array(0); bestimmt, damit's keine warnings gibt und die schleife von 0 bis 10 laufen lassen. print_r erzeugte 191 kb ausgabe!

                      als ich die schleife 100 mal laufen lassen wollte, musste ich das experiment abbrechen, als die swap-datei von 240 auf 820 mb wuchs!

                      könnt ihr in etwa schätzen, was passieren würde, wenn bei dem exponentiellen wachstum die schleife 1000 mal laufen würde?
                      Aber nur, wenn du $a vorher definierst, ansonsten gibts nur 1000000000000000 Warnings, und mehr hab ich auch nicht gesagt
                      Wenn man das natürlich füllt, dann hat man eine schöne History, über die Veränderung im Array XD, äh, die nicht Veränderungen, oder was auch immer *bg*

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        könnt ihr in etwa schätzen, was passieren würde, wenn bei dem exponentiellen wachstum die schleife 1000 mal laufen würde?
                        hmm... kanns versuchen.
                        bei jedem durchlauf wird dat array ca. doppelt so groß, macht also
                        bei 1000 durchläufen 2^1000, das sind ca. 10^301 array-elemente.
                        wenn man bedenkt, das die geschätzte anzahl von elementarteilchen im
                        gesamten weltall auf 10^80 geschätzt wird, ist das schon nen göttliches
                        stückchen code... wird wohl ne dvd nich reichen. vielmehr müßte man jedes
                        elementarteilchen unseres universums überzeugen, 10^221 array-elemente
                        zu speichern, oder halt expandieren...
                        eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                        Kommentar

                        Lädt...
                        X