jackieo: Zufallszahlen und PHP

Liebes Forum,

die Wahrscheinlichkeit in meinem Spiel-Skript sieht vor, dass die Computergegner

a) zu 40% aus Hexen bestehen
b) zu 25% aus Wölfen
c) zu 5% aus Drachen
d) und zu 30% aus Rittern

Das ergibt ja gesamt 100% (40+25+5+30 = 100)

Nun möchte ich die Wahrscheinlichkeit gerne per PHP abfragen und nutze dabei wohl am Besten die Funktion rand().

echo (rand(0, 100)/100) ergibt z.B. 0,54 und somit 54%.

Nun meine Fragen:
a) was mache ich nun mit dem Wert 54% bzw. 0,54? Macht es Sinn, nun abzufragen:
If WERT <= "40" // Wert ist hier ja jetzt 0,54
Then Gegner = Hexe
Else If WERT > "40" AND WERT < "65"
Then Gegner = Wolf
Else If WERT > "65" AND WERT < "70"
Then Gegner = Drache
Else Gegner = Ritter

b) wie schaffe ich es, dass der Gegner auch wirklich häufiger Hexe sein wird als z.B. ein Drache?

Vielen Dank und Grüße,
jackieo

  1. Hallo jackieo,

    a) zu 40% aus Hexen bestehen
    b) zu 25% aus Wölfen
    c) zu 5% aus Drachen
    d) und zu 30% aus Rittern

    ich würde es so machen:

    Zufallszahl z mit 0 <= z < 100 erzeugen,

    if z < 40 dann Hexe
    else if z < 65 dann Wolf
    else if z < 70 dann Drachen
    else Ritter

    So berechne ich den W-Baum auf meiner HP.

    Gruß, Jürgen

    1. Super, vielen Dank!

    2. Zufallszahl z mit 0 <= z < 100 erzeugen

      also wäre das in PHP $z = rand(0, 100); und danach folgt die Abfrage:

      if z < 40 dann Hexe
      else if z < 65 dann Wolf
      else if z < 70 dann Drachen
      else Ritter

      ?

  2. If WERT <= "40" // Wert ist hier ja jetzt 0,54
    Then Gegner = Hexe
    Else If WERT > "40" AND WERT < "65"
    Then Gegner = Wolf
    Else If WERT > "65" AND WERT < "70"

    Und was machst du bei genau 65? ;)

    1. Hallo,

      If WERT <= "40" // Wert ist hier ja jetzt 0,54
      Then Gegner = Hexe
      Else If WERT > "40" AND WERT < "65"
      Then Gegner = Wolf
      Else If WERT > "65" AND WERT < "70"

      Und was machst du bei genau 65? ;)

      dann ist es das Phantom! ;-)

      *scnr*
       Martin

      --
      Nein, es ist nicht wahr, dass bei der Post Beamte schneller befördert werden als Pakete.
    2. Und was machst du bei genau 65? ;)

      soll natürlcih heißen:

      If WERT <= "40" // Wert ist hier ja jetzt 0,54
      Then Gegner = Hexe
      Else If WERT > "40" AND WERT <= "65"
      Then Gegner = Wolf
      Else If WERT > "65" AND WERT <= "70"
      Else ...