Wirklich funktionierender Zufall

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

  • Wirklich funktionierender Zufall

    Hallo,

    ich habe schon länger das Problem, dass ich bei allen meinen Scripten keine wirklich korrekte Zufalls Funktion habe.
    Denn wenn ich die Zufallsfunktion viele Male hintereinander aufrufe, bekomme ich sehr häufig totale Ausreißer und ein Ergebnis kommt ständig hintereinander.

    Simples Beispiel:
    PHP-Code:
    for($i=0;$i<2000;$i++)
    {
      
    mt_srand ((double) microtime() * 1000000);
      
    $zahl=mt_rand(01);
      echo 
    $zahl."<br>";

    Oft funktioniert es, aber da habe ich bei manchen Aufrufen auch eine Zahl teilweise 90 Mal oder mehr hintereinander stehen. Das kann doch nicht sein. Das entspräche doch einer Wahrscheinlichkeit von 8*10^-28. Also 8 durch 100 Quadrilliarden, wenn ich richtig überschlagen habe.
    Wenn ich überall solche Wahrscheinlichkeiten hätte, dann wäre ich wohl schon längst mehrmaliger Lottogewinner

    Im übrigen habe ich das Problem nicht nur auf meinem Localhost, sondern auch auf anderen externen Servern von unterschiedlichen Anbietern. Also am Server kann es eigentlich nicht liegen.

    Ich hatte früher auch nur rand(); benutzt, aber da war es genau dasselbe und deswegen hatte ich dann mal auf mt_rand(); umgestellt, was aber offensichtlich nichts genützt hat.

    Mache ich da im Umgang mit dem Zufall etwas falsch oder kann es bei derartig vielen Aufrufen keinen gescheiten Zufall mehr geben?

    Über Antworten würde ich mich freuen.
    naitsab

  • #2
    eigentlich auch kein Wunder so wie du es aufgebaut hast, mit mt_srand setzt du den Startpunkt und wenn der Startpunkt der gleiche ist, sind auch die Zufallszahlen die gleichen, damit man reihen reproduzieren kann.
    PHP-Code:
    mt_srand ((double) microtime() * 1000000);
    for(
    $i=0;$i<2000;$i++)
    {
        
    $zahl=mt_rand(01);
        echo 
    $zahl."<br>";

    so sollten nicht mehrere Zahlen hintereinander gleich sein

    Kommentar


    • #3
      mt_srand() ist doch mittlerweile sowieso überflüssig.
      Wir werden alle sterben

      Kommentar


      • #4
        Das schöne am Zufall ist, das er zufällig ist.

        bei 2 Möglichkeiten (0 oder 1) ist die Aufeinanderfolge der Zahlen (oder Zustände ) sicherlich manchmal erstaunlich.
        Aber gugstu hier
        Die Summe des Vorkommens ist da schon sehr ausgeglichen

        @krel:
        seh ich das richtig oder benutzt du in deinem beispiel eben genau 2000 mal den gleichen startwert, wobei der TE das nicht tut ?

        EDIT:
        denkfehler @krel, sorry
        Zuletzt geändert von ; 03.04.2009, 14:41.

        Kommentar


        • #5
          Original geschrieben von krel
          eigentlich auch kein Wunder so wie du es aufgebaut hast, mit mt_srand setzt du den Startpunkt und wenn der Startpunkt der gleiche ist, sind auch die Zufallszahlen die gleichen, damit man reihen reproduzieren kann.
          Aber wenn ich das mt_srand() aus der Schleife herauslöse, habe ich doch 2000 mal den gleichen Wert. Wenn ich es in der Schleife selbst aufrufe, habe ich doch immer einen anderen Wert.
          Habe ich da jetzt einen Denkfehler oder habe ich die Funktionsweise von mt_srand() nicht richtig verstanden?

          Original geschrieben von combie
          mt_srand() ist doch mittlerweile sowieso überflüssig.
          Warum?

          Kommentar


          • #6
            Habe ich da jetzt einen Denkfehler
            Jawoll!!

            habe ich die Funktionsweise von mt_srand() nicht richtig verstanden?
            Jawoll!!
            Und mit dem Begriff "initialisierung" hast du auch so deine Probleme.

            Selber lesen macht selber schlau!
            http://de2.php.net/manual/de/function.mt-srand.php
            http://de2.php.net/manual/de/function.mt-rand.php
            Zuletzt geändert von combie; 03.04.2009, 15:15.
            Wir werden alle sterben

            Kommentar

            Lädt...
            X