[PHP] Random mit Beeinflussungsmöglichkeit

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    ich suche eine Möglichkeit zufällig true/false auszugeben jedoch mit Beeinflussungsmöglichkeiten.
    Beispiel: Ich möchte zu 70% true haben und zu 30% false.
    Könnt ihr mir helfen ;) ?
    Automatisch zusammengefügt:
    Habe jetzt gerade erst gesehen das es einen Web-Programmierungs Abteil gibt, kann diesen Thread wer verschieben ?

    Einmal editiert, zuletzt von djkobi (28. Juni 2016 um 14:05)

  • Ich möchte ich es in PHP und zusätzlich muss dieser Wert variable sein.

    hmm...
    Automatisch zusammengefügt:


    Hallo djkobi
    Die rand Funktion zusammen mit einer Fallunterscheidung sollte da ausreichen.

    Gruß
    Chris

    Ich kenne die rand Funktion jedoch weiß ich nicht wie du das mit der Fallunterscheidung meinst.
    Hast du ein Beispiel für mich ?

    Einmal editiert, zuletzt von djkobi (28. Juni 2016 um 14:43)

  • Läuft das PHP Script denn permanent, also ist dort eine Schleife drin, oder wird die Datei immer wieder erneut ausgeführt? Und worüber wird die Datei angesprochen: Webserver oder Konsole?

    Das Problem wird denk ich sein zu erkennen wie oft bereits "true" oder "false" ausgegeben wurde, da du ja unbedingt ein bestimmtes Verhältnis haben willst.


  • Läuft das PHP Script denn permanent, also ist dort eine Schleife drin, oder wird die Datei immer wieder erneut ausgeführt? Und worüber wird die Datei angesprochen: Webserver oder Konsole?

    Das Problem wird denk ich sein zu erkennen wie oft bereits "true" oder "false" ausgegeben wurde, da du ja unbedingt ein bestimmtes Verhältnis haben willst.


    Ich habe einen Webserver wo eine Variable zmb. 70/30/50... ausgiebt wenn die Datei erneut ausgeführt wird.
    Ich möchte nun zu 70/30/50 %true ausgeben.

    Ja ich weiß nicht eventuell in eine DB speichern, dachte halt es gibt eine Methode dafür und ihr wisst die vll. :)

    Einmal editiert, zuletzt von djkobi (28. Juni 2016 um 14:51)


  • [...]

    Ich kenne die rand Funktion jedoch weiß ich nicht wie du das mit der Fallunterscheidung meinst.
    Hast du ein Beispiel für mich ?

    Eine Fallunterscheidung kann in PHP mit if umgesetzt werden.

    Geht es denn Darum, dass bei 100 (bzw. einer bestimmten Anzahl) exakt das Verhältinis 30%/70% erreicht wird, oder soll es nur für sehr viele "Ziehungen" am Ende etwa 30%/70% sein, (also wäre 69.95% / 30.05% auch Ok).

  • Eine Fallunterscheidung kann in PHP mit if umgesetzt werden.

    Geht es denn Darum, dass bei 100 (bzw. einer bestimmten Anzahl) exakt das Verhältinis 30%/70% erreicht wird, oder soll es nur für sehr viele "Ziehungen" am Ende etwa 30%/70% sein, (also wäre 69.95% / 30.05% auch Ok).


    69.95% / 30.05% wäre auch ok.
    Es geht nur darum ca. auf diesen Wert zukommen.


  • Es geht nur darum ca. auf diesen Wert zukommen.

    Ok, dann musst du nicht Speichern, was du schon ausgegeben hast, sondern kannst es nach meiner Idee machen.

    PS: Hast du inzwischen herausgefunden, wie du aus rand und if das Verhältnis bestimmen kannst, oder brauchst du weiter Tipps?

    Einmal editiert, zuletzt von ChrisvA (28. Juni 2016 um 15:38)

  • Ok, dann musst du nicht Speichern, was du schon ausgegeben hast, sondern kannst es nach meiner Idee machen.

    PS: Hast du inzwischen herausgefunden, wie du aus rand und if das Verhältnis bestimmen kannst, oder brauchst du weiter Tipps?

    Habe gerade noch was anderes zu tun kannst mir aber gerne einen tipp geben :D

  • Probiers mal damit:

    Die Zeilen
    echo $trueperc."\n";
    echo $falseperc."\n";
    echo $perc."\n";

    einfach auskommentieren wenn du die Funktion tatsächlich verwenden willst, natürlich ist die for Schleife auch nur zum testen ;)

    Allerdings glaub ich ehrlich gesagt nicht dass das deiner Anforderung entspricht :fies:

  • Das Problem mit der Zufälligen Zahl ist aber das du nicht wirklich ein Verhältnis von 70% true, 30% false erreichst da die Generierung der zufälligen Zahl sich nicht an diese Vorgabe hält. Wenn man sich nur an die zufällige Zahlgenerierung hält kann auch öfter als 70% true erzeugt werden.
    Um das zu erreichen musst du IMHO vorherige Zustände (true/false) speichern und bei der nächsten Generierung beachten. Also von wie viel Generierungen kam wie oft false und wie oft true.

    Selbst das Beispiel von tom.angelripper funktioniert nicht derart korrekt:

    Da kommt öfter "false" raus als es sollte.

  • Hallo zusammen,
    habe gerade selbst mal einige kleine tests gemacht und musst leider festestellen, dass rand(0,1) integer liefert und damit immer das Ergebnis 50/50 erreicht wird. Folgendes Skript kommt aber meist um die 70% raus.
    [code=php]$tr = 0;
    $fl = 0;
    for($i = 0; $i < 1000; ++$i){
    if(mt_rand(0,100) < 70){
    ++$tr;
    }else{
    ++$fl;
    }
    }
     
    echo "TR:".$tr."<br/>\n";
    echo "FL:".$fl."<br/>\n";[/php]

    Gruß
    Chris

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!