Suche Algorithmus

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

  • Suche Algorithmus

    Hallo,

    dachte eigentlich dass ich gut in Mathe bin, aber irgendwie stehe ich auf dem Schlauch

    Ich benötige eine Funktion die so eine Art Mittelwert hat und je nach Zufall Abweichungen davon liefert. Je kleiner der Zufallsbereich desto größer die Abweichung

    z.B. 10 Zufallszahlen

    1: 300
    2: 302
    3: 298
    4: 300
    5: 304
    6: 304
    7: 297
    8: 330
    9: 295
    10: 270

    D.h. die Werte sollen immer in einem bestimmten bereich liegen, "ab und zu" jedoch auch mal geringfügig abweichen (8 u. 10)

    Das müsste dann ja denke ich eine Parabel sein die auf der X-Achse nur sehr langsam, aber fortlaufend und später dann überdimensional steigt

    War das irgendwie verständlich? :/

  • #2
    Wie zufällig muss das denn sein? Vielleicht ist etwas in der Art ausreichend?
    PHP-Code:
    <?php
        $middle 
    300;
        
    $dif 5;
        
    $outlierDif 30;
        
    $outlier rand0);
        
        if( 
    $outlier==) {
            
    $rand rand$middle-$outlierDif$middle+$outlierDif );
        }
        else {
            
    $rand rand$middle-$dif$middle+$dif );
        }
    ?>

    Kommentar


    • #3
      Du fängst an mit dem Mittelwert und addierst dazu einen zufälligen Wert, der deiner Abweichung angepasst ist, z.B. mit rand(-$abweichung, $abweichung).

      Wenn du jetzt noch ab und zu höhere Abweichungen haben willst, dann kannst du diesen Wert ab und zu noch verändern, wieder mit rand.
      PHP-Code:
      if (rand(020) == { ... } 
      Das würde im Mittel bei jedem 20sten Mal den Wert verändern.
      hopka.net!

      Kommentar


      • #4
        Original geschrieben von PHP-Desaster
        Wie zufällig muss das denn sein? Vielleicht ist etwas in der Art ausreichend?
        PHP-Code:
        <?php
            $middle 
        300;
            
        $dif 5;
            
        $outlierDif 30;
            
        $outlier rand0);
            
            if( 
        $outlier==) {
                
        $rand rand$middle-$outlierDif$middle+$outlierDif );
            }
            else {
                
        $rand rand$middle-$dif$middle+$dif );
            }
        ?>
        oh danke das ist eigentlich schon absolut ausreichend. Damit kann ich was anfangen danke

        Kommentar


        • #5
          wobei ganz perfekt doch noch nicht, denn alles was vom Mittel abweicht (<> 5) ist dann völlig gleichmäßig verteilt ($outlierDif = 30). Perfekt wäre es stufenweise wie bei einer Parabel ...

          Kommentar


          • #6
            Darum ja meine Frage. Wenn es ausreicht, fügst du noch ein paar Schwellen hinzu, beispielsweise holst du dir bei 1 und 2 eine Zufallszahl mit $outlierDif / 2.
            Reicht dir dies nicht aus, musst du schon etwas mathematischer ran gehen. Vielleicht sowas:
            PHP-Code:
            $dif 10;
            $rand rand( -$dif$dif );
            $rand abs$rand ) * $rand;
            $rand 300 $rand
            Wären jetzt Zahlen zwischen 200 und 400, wobei diese sich quadratisch um 300 verteilen.

            Kommentar

            Lädt...
            X