— TRANSPARENCY

PROVABLY FAIR

Every card pull on TCGRoll uses a weighted random algorithm with published drop rates. There are no hidden modifiers, no pity manipulation, and no changes to rates after you open a case. This page explains exactly how it works.

HOW IT WORKS

  1. 1

    Drop rates are published

    Every case lists the exact drop rate for each card — visible before you spend a single token. Nothing is hidden.

  2. 2

    A random number is drawn

    When you open a case, the server calls Math.random() (Node.js CSPRNG, seeded by the OS) to generate a number between 0 and the total weight of all cards in the pool.

  3. 3

    Weighted selection picks the card

    The algorithm walks the card pool, subtracting each card's drop rate until the value reaches zero or below. That card is returned. Cards with higher drop rates occupy more of the range and are proportionally more likely to be selected.

  4. 4

    The result is recorded

    The pulled cards are written to the database immediately before being shown to you. The server state is the source of truth — not the animation.

THE ALGORITHM

This is the exact function used in production, unmodified:

function weightedRandom(cards) {
  // Sum all drop rates (e.g. 60 + 25 + 10 + 4 + 1 = 100)
  const totalWeight = cards.reduce(
    (sum, c) => sum + c.dropRate, 0
  )

  // Draw a random number in [0, totalWeight)
  let random = Math.random() * totalWeight

  // Walk the pool — subtract each card's weight.
  // The first card that brings random to ≤ 0 wins.
  for (const caseCard of cards) {
    random -= caseCard.dropRate
    if (random <= 0) return caseCard.card
  }

  // Fallback (floating-point edge case only)
  return cards[cards.length - 1].card
}

A card with a 60% drop rate occupies 60 units of the range. A Legendary with 1% occupies 1 unit. The probability of landing on any card equals dropRate / totalWeight.

EXAMPLE DROP RATES

A typical Standard case might look like this. Each case page shows its exact rates.

COMMON
60 ÷ 100 = 60.0% chance
UNCOMMON
25 ÷ 100 = 25.0% chance
RARE
10 ÷ 100 = 10.0% chance
EPIC
4 ÷ 100 = 4.0% chance
LEGENDARY
1 ÷ 100 = 1.0% chance

LIVE SIMULATOR

Run the exact same algorithm used in production. Verify the distribution yourself.

60%
COM
25%
UNC
10%
RAR
4%
EPI
1%
LEG

QUESTIONS?

If you believe you've experienced anomalous results, contact us with your opening ID (visible in your profile transaction history) and we'll investigate.