Verify Limbo Result

Result:

(waiting...)

Explanation

Pseudocode: translate random number → multiplier (multiplierDecimalPlaces = 2)

Inputs:
  multiplierDecimalPlaces: 2
  rtp: 0.99
  randomNumber: float between 0 (inclusive) and 1 (exclusive)

Algorithm:
  1) houseEdge = 2.0 - rtp
  2) multiplier = 1.0 / ((1.0 - randomNumber) * houseEdge)
  3) roundedMultiplier = truncate_toward_zero(multiplier, 2)
     (i.e. remove extra decimals without rounding: 1.239 -> 1.23)
  4) if roundedMultiplier < 1.01 then roundedMultiplier = 1.00
  5) return roundedMultiplier

Helper: truncate_toward_zero(x, decimals)
  factor = 10^decimals
  if x >= 0: return floor(x * factor) / factor
  else:      return ceil(x * factor) / factor

Example:
  rtp = 0.99
  randomNumber = 0.123456789
  houseEdge = 1.01
  multiplier = 1 / ((1 - 0.123456789) * 1.01) = 1.12954957322
  truncatedMultiplier = 1.12