1 Primeiro cenário

Definir a probabilidade inicial de 0, e deixar as demais fixas

Para que o número máximo de vouchers sorteados fique na média de 10 por login, as chances de 1 voucher ser sorteado é de 0.2%.

Significa dizer que, a chance de ter 1 premiação começaria a aparecer para quem tem pelo menos 50 vouchers (ou 500 contratos pagos).

Valores Novas_Probabilidades
0 0.998
5 0.180
10 0.010
25 0.000
50 0.000
100 0.000

0 significa não ser premiado, que, neste caso, é de 99.80% de probabilidade. A probabilidade de ser premiado é de 0.2%.

Com base nos dados de jul/2025, 91,84% dos logins terão entre 1 e 500 contratos pagos. Ou seja, o prêmio seria dividido entre apenas 9,15% dos logins.

Para eliminar este problema, precisamos ponderar as probababilidades de acordo com o volume de vouchers.

2 Segundo cenário

Ponderar a probabilidade de acordo com o acúmulo de premiações por pessoa

Valores Novas_Probabilidades
0 0.50
5 45.92
10 3.05
25 0.59
50 0.30
100 0.14

Neste caso, a probabilidade inicial de não ser premiado é de 50%, e, por consequência, a ser premiado é de 50%.

Com as probabilidades ponderadas percebe-se que ainda existe uma relação entre “produzir mais x ganhar mais”, contudo, na forma ponderada, você já começa ganhando desde as primeiras giradas na roleta, significando, principalmente, 2 coisas:

I - Chances reais de ser premiado logo nas primeiras tentativas para quem tem poucos vouchers.

II - Manutenção da alta probabilidade de premiação (mas, respeitando o limite máximo) para quem tem muitos vouchers acumulados.

Isto dissiminará o investimento da campanha (que não mais será concentrado em 10% dos logins).

2.1 - Definindo as probabilidades

A probabilidades são definidas pela fórmula abaixo, que somente será ativada se a probabilidade de 0 determinada pela quantidade de premiações for maior ou igual a probabilidade inicial definida:

\[p_0(v) = p_0,base + (p_0, max - p_0,base) * (1 - e^{-k \cdot v})\]

Simplificando:

\[p_0(v) = p_0,base + (p_0, max - p_0,base) * (1 - exp(-k \cdot v))\]

Onde:

p_0,base: probabilidade inicial de 0

p_0,max: probabilidade máxima de 0

k: Taxa

v: número de premiações (soma do número de vouchers sorteados para o login)

2.2 - Aplicação

Sugere-se encapsular a fórmula numa função que retorna as probabilidades que serão aplicadas à roleta, para cada login digitador.

  • inputs:

Como parâmetro, a funçao vai receber o valor de ‘v’, que é o número de premiações (soma dos vouchers premiados acumulados na campanha do login digitador que está girando a roleta).

  • outputs:

Retorna um array contendo as probabilidades associadas à cada possibilidade, no caso da roleta 0, 5, 10, 25, 50, 100.

Pseudo código

FUNÇÃO probs_roleta(vouchers):

      // Declaração de variáveis e constantes
      
      REFERENCIA = [44.97, 2.99, 0.58, 0.29, 0.14]
      
      PROBABILIDADES_PREMIO = [0, 5, 10, 25, 50, 100] // Apenas para referência dos prêmios, não é usado na lógica
      
      PROB0_INICIAL = 0.30
      
      P0_MAXIMO = 0.99
      
      K = 0.05
    
      // Cálculo da nova probabilidade de obter 0
      
      P0_NOVO = PROB0_INICIAL + (P0_MAXIMO - PROB0_INICIAL) * (1 - EXP(-K * vouchers))
    
      // Cálculo do fator de ajuste para as outras probabilidades
      
      
      SE P0_NOVO >= PROB0_INICIAL:
      
          SOMA_OUTRAS_PROBS = SOMA(REFERENCIA)
          
          FATOR_AJUSTE = (1 - P0_NOVO) / SOMA_OUTRAS_PROBS
        
          // Cálculo das novas probabilidades para os outros prêmios
          
          OUTRAS_PROBABILIDADES_NOVAS = []
          
          PARA CADA prob EM REFERENCIA:
          
            ADICIONAR (prob * FATOR_AJUSTE) À OUTRAS_PROBABILIDADES_NOVAS
        
          // Montagem do vetor final de probabilidades
          
          PROBABILIDADES_FINAIS = [P0_NOVO] + OUTRAS_PROBABILIDADES_NOVAS
          
      
      SE NÃO:
      
          FATOR_AJUSTE = (1 - PROB0_INICIAL) / SOMA_OUTRAS_PROBS
        
          // Cálculo das novas probabilidades para os outros prêmios
          
          OUTRAS_PROBABILIDADES_NOVAS = []
          
          PARA CADA prob EM REFERENCIA:
          
            ADICIONAR (prob * FATOR_AJUSTE) À OUTRAS_PROBABILIDADES_NOVAS
        
          // Montagem do vetor final de probabilidades
          
          PROBABILIDADES_FINAIS = [PROB0_INICIAL] + OUTRAS_PROBABILIDADES_NOVAS
          
      // Retorno do resultado
      
      RETORNAR PROBABILIDADES_FINAIS

FIM FUNÇÃO

Exemplo em python:

import math

def probs_roleta(v: int) -> list[float]:
  """
  Calcula as probabilidades de prêmios em uma roleta com base no número de vouchers premiados.
  
  Args:
    v: O número de vouchers premiados que o jogador possui.
    
  Returns:
    Uma lista de floats contendo as novas probabilidades para cada prêmio.
  """
  
  # Definindo constantes
  referencia = [44.97, 2.99, 0.58, 0.29, 0.14]
  prob0_inicial = 0.50
  p0_maximo = 0.99
  k = 1.5
  
  # Calculando a nova probabilidade de obter 0
  p0_novo = prob0_inicial + (p0_maximo - prob0_inicial) * (1 - math.exp(-k * v))
  
  if p0_novo >= prob0_inicial:
    
    # Calculando o fator de ajuste para as outras probabilidades
    soma_outras_probs = sum(referencia)
    fator_ajuste = (1 - p0_novo) / soma_outras_probs
    
    # Calculando as novas probabilidades para os outros prêmios
    outras_probs_novas = [prob * fator_ajuste for prob in referencia]
    
    # Montando o vetor final de probabilidades
    probabilidades_finais = [p0_novo] + outras_probs_novas
  
  else:
      
    soma_outras_probs = sum(referencia)
    fator_ajuste = (1 - prob0_inicial) / soma_outras_probs
    
    # Calculando as novas probabilidades para os outros prêmios
    outras_probs_novas = [prob * fator_ajuste for prob in referencia]
    
    # Montando o vetor final de probabilidades
    probabilidades_finais = [prob0_inicial] + outras_probs_novas


  return probabilidades_finais

# Exemplo de uso
vouchers_premiados = 2
probabilidades = probs_roleta(vouchers_exemplo)

Explicação

Supondo que a probabilidade inicial de 0 foi definida em 50%, e, que o parceiro girou a roleta 100 vezes.

Voucher_sorteado Valor_sorteado
1 10
6 5
30 10
61 5

Ao girar a roleta sem nunca ter sido premiado, sua probabilidade é de 50% (conforme definido manualmente). Depois de ser sorteado a primeira vez, a probabilidade de ser sorteado novamente diminui; ao ser sorteado uma terceira vez, a probabilidade deminui mais ainda, e assim sucessivamente.

A calibragem da probabilidade inicial de 0, e do parâmetro k (taxa de decaimento) foi feita para que o número máximo de premiações (10 por login) apareça somente próximo aos 500 vouchers.

## [1] "No modelo de roleta proposto (o modelo ponderado), baseado nos dados do mês de julho/2025, teríamos um total de R$ 30125,00 distribuídos em 4884 vouchers sorteados."

3 Conclusão

1 - No modelo orginal, percebe-se que:

  1. Se deixar a probabilidade de ganhar muito baixa (0,2%) apenas 10% dos logins terão reais condições de serem premiados;

  2. Se aumentar a probabilidade de ganho para premiar os logins com menos vouchers, a campanha facilmente extrapolaria os limites financeiros do investimento na campanha;

2 - No modelo ajustado:

  1. As probabilidades de ser premiado aumentam à medida que a produção também, entretanto, existem chances de 50% de ser premiado logo nos primeiros vouchers, devido a suavização do efeito linear da quantidade de vouchers implementada pela fórmula;

  2. Há melhor diluição do investimento da campanha;

  3. E possível limitar a quantidade máxima de premiações, mantendo a sensação de aleatoriedade;

  4. Houve uma redução significativa do valor total da campanha, sendo possível postergar o período de vigência, ou, aumentar a probabilidade dos prêmios maiores.

3 - Após desenvolver a função, inputar os seguintes parâmetros:

  1. sorteios = número de vouchers premiados.

  2. prob0 = .50,

  3. bones = c(0, 5, 10, 25, 50, 100),

  4. referencia = c(44.97, 2.99, 0.58, 0.29, 0.14)

  5. p0_max = .99,

  6. k = 1.65

4 Sugestão

Conforme observação da documentação da campanha, foi definido o investimento de R$ 60.000,00. Para que se possa enquadrar a lógica do sorteio nos limites impostos, a campanha atingiu o o valor de aproximadamente R$ 31.000,00, metade do previsto.

Assim sendo, abrem-se 3 possibilidades:

1 - Aumentar ainda mais as chances de ser premiado inicialmente (atualmente definida em 50%), o que não se sugere;

2 - Aumentar a probabilidade de ser sorteado nos valores acima de R$ 5,00;

3 - Aumentar o período de vigência da campanha.