Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Zufallszahl anhand einer Quote bestimmen?
Frage
Hallo,
so lautet mein Script, zur Bestimmung einer Zahl aus drei Zahlen:
<?
$z1 = ´1´;
$z2 = ´2´;
$z3 = ´2´;
srand((float) microtime() * 10000000);
$input = array($z1,$z2,$z3);
$rand_keys = array_rand($input, 3);
$zahlen = $input[$rand_keys[0]];
echo $zahlen;
?>
Nun möchte ich aus der Variable "$quote", die jeweils für $z1, $z2 und $z3 bestimmt wurde, mit der $quote die Wahrscheinlichkeiten des Auftreten der $zx ändern.
Wie ist das möglich?
Antwort 1 von Nessus
Hi,
wenn ich dich richtig verstanden habe, ist das unlogisch, da dies dann keine Zufallszahl mehr ist.
Nessus
wenn ich dich richtig verstanden habe, ist das unlogisch, da dies dann keine Zufallszahl mehr ist.
Nessus
Antwort 2 von SGD-Daniel1
Es ist so zu verstehen, wie ein Wettspiel ... einer bietet ein Betrag von z.B. 100 und hat nun die Auswahl von 3 Möglichkeiten. Je niedriger die Quote, umso häufiger bzw. wahrscheinlicher (in diesem Fall) kommt die Zahl "1", wenn diese Zahl die niedrigere Quote hat.
So soll das Prinzip aussehen!
So soll das Prinzip aussehen!
Antwort 3 von Hrubesch
Angenommen Du hast 3 Ausgänge mit unterschiedlichen Wahrscheinlichkeiten:
Ausgang 1 = 20%
Ausgang 2 = 30%
Ausgang 3 = 50%
Dann kannst Du z.B. Zufallszahlen zwischen 0 und 1 generieren. Wenn die Zahl zwischen 0 und 0,2 liegt, wurde Ausgang 1 getroffen. Zwischen 0,2 und 0,5 Ausgang 2 und über 0,5 wurde Ausgang 3 getroffen.
Die Beziehung zwischen Quoten und Wahrscheinlichkeiten kannst Du hier nachlesen:
http://de.wikipedia.org/wiki/Sportwette
Ausgang 1 = 20%
Ausgang 2 = 30%
Ausgang 3 = 50%
Dann kannst Du z.B. Zufallszahlen zwischen 0 und 1 generieren. Wenn die Zahl zwischen 0 und 0,2 liegt, wurde Ausgang 1 getroffen. Zwischen 0,2 und 0,5 Ausgang 2 und über 0,5 wurde Ausgang 3 getroffen.
Die Beziehung zwischen Quoten und Wahrscheinlichkeiten kannst Du hier nachlesen:
http://de.wikipedia.org/wiki/Sportwette
Antwort 4 von SGD-Daniel1
Das geht so nicht, weil ich über srand() die Zahlen 1; 2 und 3 generieren lasse. Stimmen beide überein, bekommt man Punkte/Geld.
Antwort 5 von Hrubesch
Zitat:
Das geht so nicht, weil ich über srand() die Zahlen 1; 2 und 3 generieren lasse.
Das geht so nicht, weil ich über srand() die Zahlen 1; 2 und 3 generieren lasse.
Wenn Du es so machst, hast Du aber gleiche Wahrscheinlichkeiten für jeden Ausgang (jeweils 33,3%). Für das, was Du möchtest, benötigst Du eine Transformation der Ergebnisse von rand().
Antwort 6 von SGD-Daniel1
@Hrubesch:
Genau, es würde bei 33,3 % liegen, aber durch die Quoten sollen sich die Prozente verändern.
Was muss ich im obigen Code einfügen?
Genau, es würde bei 33,3 % liegen, aber durch die Quoten sollen sich die Prozente verändern.
Was muss ich im obigen Code einfügen?
Antwort 7 von Hrubesch
Zitat:
Was muss ich im obigen Code einfügen?
Was muss ich im obigen Code einfügen?
Keine Ahnung. Ich verstehe Deinen Code nicht und habe leider auch nicht die Zeit mich da reinzudenken. Wenn Du es mit array_rand() machen willst, geht das auch, ist aber umständlicher und nicht ressourcenfreundlich. Du musst halt sicherstellen, dass die Ergebnisse 1, 2 und 3 nicht gleich häufig im Array vorkommen, sondern dass ihre Anzahl proportional zur jeweiligen Eintrittswahrscheinlichkeit ist.
Um das Beispiel aus Antwort 3 aufzugreifen, bräuchtest Du z.B. 10 Arrayschlüssel. Davon müssten 2 Schlüssel den Wert 1 als Value beinhalten, 3 Stück den Wert 2 haben und 5 den Wert 3.
Also nochmal anschaulich die Werte:
1,1,2,2,2,3,3,3,3,3
Wenn Du aus dieser Menge zufällig einen Wert auswählen lässt, sind dann die Wahrscheinlichkeiten für 1 2 und 3 nicht mehr gleich gross.

