Zufallschance

schmidi000

Mitglied
Hey Leute,

mich würde mal interessieren, wie man einen Zufallsgenerator mit einer gewissen % Chance programmiert.
Bzw. wie die Logik dahinter funktioniert.

Kleines Beispiel:
Bei manchen Spielen kann man Rüstungen, Waffen etc. beim Schmied oder so verbessern. Das Verbessern klappt aber nicht zu 100%, sondern zum Beispiel nur zu 65%.

Also welche Logik steckt hinter den 65%?

Ist reine Interesse... ich komm echt nicht dahinter wie so etwas funktionieren könnte ;D

mfg
 
T

troll

Gast
der normale prng ist so implementiert das jedes ergebnis gleich oft verteilt vorkommt ...
ergo reicht es zu prüfen ob das ergrbnis größer gleich des prozentwertes ist


@triblub
Math.random() called Random.next() ... also brauch man nichts multiplizieren oder casten sondern nur direkt Random.nextXXX() mot dem entsprechenden wert (bei prozenten 100 bzw 1000) zu callen ...
 
S

Spacerat

Gast
"Math.random() * 100.0" würde niemals 100% liefern, weil die Range von 0.0 inklusive und 1.0 exclusive geht.
Das ist in soweit "fatal", weil man eigentlich aus Faktoren zwischen 0 und 1 recht simpel durch Multiplikation mit 100 oder 1000 Prozent- oder Promilleangaben bekommt.
Aber immerhin gibt's ja sog. Workarounds:
Java:
class RandomFactors {
  private static final Random rnd = new Random();

  private RandomFactors() {}

  public static double next() {
    long bits = rnd.nextInt(100001) << 32;
    if(bits < 0x0010000000000000L) {
      bits |= rnd.nextLong() & 0xFFFFFFFFL;
    }
    return Double.longBitsToDouble(bits);
  }

  public static double nextPercent() {
    return next() * 100.0;
  }

  public static double nextPromille() {
    return next() * 1000.0;
  }
}
Anm.: Möglich, das ich mich beim Abzählen der Bits verhauen habe, dass long sollte auf jeden Fall zwischen 0 (inkl.) und 2^53 (inkl.) liegen.
 

Neue Themen


Oben