Zufallszahlen nicht normal verteilt

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

  • #16
    Wenn du 600 Versuche mit einem 6er Würfel brauchst, aber dein rand() bei 1 kaputt ist, dann mach halt 600/6*7 = 700 Versuche mit einem 7er Würfel. Die 1er Würfe schmeißt du weg und bei den 2-7er Würfen ziehst du 1 von der Augenzahl ab. Dann stimmts doch, oder?
    weil wenn ich 700 Ziehungen mache und die 1er wegschmeisse ergibt sich keine saubere Normalverteilung.
    Wenn es im fertigen Script nur um einzelne Würfe geht, kann man das sicher vernachlässigen, anderenfalls müsste man die Häufigkeiten wieder auf eine Gesamtsumme von 600 bringen.

    Du könntest natürlich auch gleich von 2 bis 7 Würfeln und 1 abziehen, aber vielleicht ist den rand() nicht bei 1 kaputt sondern beim Beginn des Wertebereichs.
    Das hatte mein Code leider mit negativem Ergebnis getestet.

    Und auf anderen Webservern ergeben sich ja eben die sauberen Ergebnisse. Also muss das wohl an hosteurope liegen, bei denen läuft irgendwas verkehrt
    Man muss aber auch mal sagen, dass rand() nicht "von selbst" solchen Murks macht. Dein Provider hat da dran rumgepatcht oder der Zufallsgenerator des OS unten drunter ist schon kaputt.
    Denke auch, dass das Problem an der Wurzel gepackt werden sollte.

    Welche PHP-Version läuft da?
    Wurde oben verlinkt: PHP-Version: 5.2.12 Weitere Infos zum System wurden aber noch nicht genannt.

    Kommentar


    • #17
      PHP-Code:
      <?php
      error_reporting
      (-1);
      ini_set('display_errors'TRUE);


      $anzahl 10000;   // wurfe
      $pool   6;       // Seiten des Wurfels
      $wuerfe array_fill(1,$pool,0);

      for (
      $i=0;$i<$anzahl;$i++) $wuerfe[mt_rand()%$pool+1]++;

      ?>
      <h1>Haufigkeiten</h1> 
            <table>
          <tr>
            <td>1er</td>
            <td>2er</td>
            <td>3er</td>
            <td>4er</td>
            <td>5er</td>
            <td>6er</td>
          </tr>
          <tr>
           <?php foreach($wuerfe as $wurf) echo "<td>$wurf</td>";?>
          </tr>
        </table>
      Wir werden alle sterben

      Kommentar


      • #18
        DANKE, jetzt klappt es !!!

        Ich bin ja echt begeistert ;o)
        der Befehl [COLOR=Red]$anzahl[rand()%6+1]++;[/COLOR] ermittelt jetzt eine saubere Normalverteilung. Und so ganz nebenbei lernt man so einiges an PHP-Befehlen kennen, die einem die Arbeit erleichtern. Aber warum das erste Programm nicht sauber rechnen kann bleibt weiterhin im Dunkeln.

        PHP-Code:
        <?php

        echo "<h1>Häufigkeiten</h1>
              <table width=40%>
            <tr>
            <td>Runde</td>
            <td>1er</td>
            <td>2er</td>
            <td>3er</td>
            <td>4er</td>
            <td>5er</td>
            <td>6er</td>
            </tr>"
        ;

        for (
        $z=1$z<=50$z++)
        {
         
        $anzahl=array_fill(1,6,0);

         for (
        $i=0;$i<600;$i++)
         {
          
        $anzahl[rand()%6+1]++;
         }

         echo 
        "<tr>
                <td>
        $z</td>
            <td>
        $anzahl[1]</td>
            <td>
        $anzahl[2]</td>
            <td>
        $anzahl[3]</td>
            <td>
        $anzahl[4]</td>
            <td>
        $anzahl[5]</td>
            <td>
        $anzahl[6]</td>
            </tr>"
        ;
        }

        echo 
        "</table>";
        ?>

        Kommentar

        Lädt...
        X