Roleta de Decisão
Deixe a roleta decidir por você, adeus indecisão
Sem registros ainda — gire a roleta!
O que é uma Roleta de Decisão?
A roda de decisão seleciona aleatoriamente uma opção de uma lista e transforma uma escolha pequena em um processo visível e compartilhado. Ela é útil em aulas, atividades de equipe, escolha de comida, ordem de apresentações, sorteios leves, brainstorming e situações em que várias opções são aceitáveis. Seu valor é reduzir fadiga de decisão e tornar a seleção transparente. Ela não substitui julgamento quando opções têm riscos, custos, regras de justiça ou responsabilidades diferentes. Para sorteios sérios, lista de participantes, pesos, exclusões e registro devem ser definidos antes de girar para que o resultado seja explicável. Funciona melhor em decisões de baixo risco.
Como usar
Como usar
- Digite o nome de uma opção no campo de entrada, pressione Enter ou clique em Add
- Adicione várias opções (até 15), cada uma com no máximo 20 caracteres
- Clique no botão central 'SPIN'; a roda começa a girar
- Aguarde a roda parar para ver o resultado selecionado aleatoriamente
Dicas de imparcialidade
- Mantenha as opções curtas e comparáveis para que todos consigam ler a roda com facilidade antes de girar.
- Para decisões importantes, combine a lista de opções antes de girar e evite alterar entradas após um resultado desfavorável.
Casos de uso
Princípio técnico
A roda é um desenho Canvas 2D sobreposto com uma escolha aleatória determinística. Cada fatia é renderizada com ctx.beginPath(); ctx.moveTo(cx, cy); ctx.arc(cx, cy, r, startAngle, endAngle); ctx.fill() onde N opções iguais recebem um arco de 2π/N radianos cada — quinze fatias resultam em 24° de arco cada, o que também explica por que a entrada é limitada a 15 para manter os rótulos legíveis. A fatia vencedora é decidida ANTES da animação: um inteiro sem sinal de 32 bits é sorteado com crypto.getRandomValues(new Uint32Array(1))[0], reduzido módulo N, e esse inteiro é a resposta. A animação então calcula uma rotação-alvo de fullSpins × 2π + (2π − winnerIndex × sliceAngle − sliceAngle/2) para que o ponteiro no topo do canvas termine apontando para o centro da fatia escolhida, e faz a transição dentro de requestAnimationFrame usando uma curva de suavização como easeOutCubic, f(t) = 1 − (1−t)³, ou easeOutBack para o pequeno ultrapassagem que simula uma roda física desacelerando. crypto.getRandomValues é o CSPRNG do Web Crypto (especificado na Web Crypto API), semeado pelo pool de entropia do sistema operacional, então, ao contrário de Math.random, a escolha não pode ser prevista lendo o estado da página. Variantes com peso constroem um array de probabilidade acumulada de tamanho N e fazem busca binária no sorteio aleatório em O(log N). As saídas são inteiramente visuais e efêmeras — nada é registrado, então qualquer trilha de auditoria (timestamp, lista de opções, captura de tela) deve ser capturada externamente antes que a página seja atualizada.
- Renderização Canvas: cada fatia é ctx.arc(cx, cy, r, startAngle, endAngle) com sliceAngle = 2π / N — 15 opções dão 24° por fatia, que é o limite prático de legibilidade.
- A seleção do vencedor usa crypto.getRandomValues(new Uint32Array(1))[0] % N — CSPRNG do Web Crypto, semeado pela entropia do SO, adequado para sorteios justos de uso único, mas NÃO para loterias reproduzíveis (sem trilha de auditoria).
- A animação roda em requestAnimationFrame na taxa de atualização do display (tipicamente 60 Hz) com easeOutCubic f(t) = 1 − (1−t)³ ou easeOutBack para um leve ultrapassagem — a curva é cosmética, o vencedor já foi escolhido.
- A rotação final é targetRotation = fullSpins × 2π + (2π − winnerIndex × sliceAngle − sliceAngle/2) para que o ponteiro superior caia no centro da fatia, não na borda.
- O modo de opções com peso constrói um array de soma prefixa dos pesos e usa busca binária para mapear um número aleatório uniforme em uma fatia em O(log N) — equivalente a amostragem por inversa da CDF.
- O viés do módulo é desprezível quando N ≤ 15 e o sorteio tem 2³² valores de amplitude (viés ≈ N / (2 × 2³²) ≈ 1,7×10⁻⁹), então nenhum loop de rejeição é necessário.
- Cada giro é i.i.d. — giros consecutivos podem repetir a mesma opção e isso é comportamento uniforme correto, não um bug; deduplicação entre giros requer um registro externo.
Exemplos
Decisão de almoço
Opções: Pizza, Sushi, Hambúrgueres, Tacos, Salada → Girar → Resultado: SushiAtividade em equipe
Opções: Boliche, Karaokê, Escape Room, Mini Golfe → Girar → Resultado: Escape RoomNoite de cinema
Opções: Ação, Comédia, Terror, Romance, Ficção Científica → Girar → Resultado: ComédiaPerguntas frequentes
O giro da roleta é realmente aleatório?
Sim. O segmento selecionado é escolhido por crypto.getRandomValues, e depois a roleta é animada para parar nele. O giro visual é só efeito — o resultado é decidido antes. Cada giro é independente dos anteriores.
Todos os segmentos têm a mesma probabilidade?
Sim. Cada opção recebe uma fatia do mesmo tamanho e cada fatia tem a mesma probabilidade. Não há modo ponderado nem enviesado — todas as opções têm a mesma chance de serem sorteadas.
A animação do giro afeta o resultado?
Não. A animação é decorativa — o resultado é calculado primeiro, e depois a roleta gira para mostrá-lo. Mesmo que você interrompa a animação antes do fim, o segmento escolhido é o mesmo.
Posso salvar a roleta entre sessões?
Não. As opções ficam guardadas só durante a sessão atual. Fechar a aba ou atualizar perde a lista. Copie suas opções antes de fechar se precisar reutilizá-las.
Devo usar para tomar decisões importantes?
Use para escolhas em grupo de baixo impacto (almoço, ordem de apresentação, sorteio de pick) em que qualquer opção é aceitável e a aleatoriedade visível evita melindres. Não terceirize decisões em que as consequências variam muito entre as opções — a roleta não consegue avaliar trade-offs.
Por que ela às vezes escolhe a mesma opção duas vezes seguidas?
Cada giro é independente. Com três opções, a probabilidade de duas escolhas iguais seguidas é 1/3 ≈ 33%. Com dez opções, é 10%. A repetição parece estranha, mas é matematicamente esperada em um sorteio genuinamente aleatório.
Minha lista de opções é enviada para algum servidor?
Não. A roleta roda inteiramente no seu navegador. As opções são salvas localmente se você optar; nada é transmitido.