Supportnet Computer
Planet of Tech

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

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!

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

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.

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?

Antwort 7 von Hrubesch

Zitat:
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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: