Calculadora de subfatorial
Conte os desarranjos de n itens, as ordenações em que nada fica na posição original: o subfatorial de 4 é 9, e você também recebe a chance de que um embaralhamento ao acaso seja um deles. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Número de elementos n
- 0
- Número de desarranjos
- 1
- Probabilidade de desarranjo
- 1
Calcula o subfatorial ! n, o número de desarranjos de n itens — permutações nas quais nada permanece em sua posição original. A partir de um inteiro n, retorna a contagem de desarranjos e a probabilidade de uma permutação aleatória ser um desarranjo.
O que o subfatorial conta e a série usada
O subfatorial ! n conta desarranjos: as permutações de n itens distintos em que nenhum item permanece em sua posição original. Esta capacidade o avalia a partir da série alternada !
n = n! · Σ (−1)^k / k! com k variando de 0 a n, que é o clássico resultado de inclusão–exclusão. A implementação acumula essa soma termo a termo enquanto constrói k!
incrementalmente, depois multiplica por n! e arredonda para o inteiro mais próximo para absorver o ruído de ponto flutuante, de modo que o valor retornado é uma contagem inteira exata. Os primeiros valores são !
0 = 1, ! 1 = 0, ! 2 = 1, ! 3 = 2, ! 4 = 9 e ! 5 = 44.
A única permutação vazia de zero itens é, por vacuidade, um desarranjo, e é por isso que ! 0 = 1, enquanto um único item nunca pode se mover, então ! 1 = 0.
A probabilidade de desarranjo e sua ligação com 1/e
Ao lado da contagem, a ferramenta retorna probability, a chance de uma permutação de n itens escolhida uniformemente ao acaso ser um desarranjo, calculada como value / n! Como a série acima é exatamente a expansão de Taylor truncada de e^(−1), essa probabilidade converge muito rapidamente para 1/e ≈ 0.367879 à medida que n cresce. Ela já está próxima com n pequeno: !
A probabilidade é arredondada half-up para seis casas decimais por padrão. Este é o cerne matemático do clássico problema do chapeleiro ou do amigo secreto, no qual a resposta quase não muda quando o grupo é maior que um punhado de pessoas.
Faixa de entrada, arredondamento e validação
A única entrada obrigatória é n, que deve ser um inteiro de 0 a 20. O limite superior de 20 é intencional: 20! é cerca de 2.43 × 10^18, perto do limite do que um float de precisão dupla representa exatamente, então limitar n mantém a contagem inteira de desarranjos exata em vez de perder precisão silenciosamente.
O parâmetro opcional decimals controla o arredondamento half-up da probabilidade.
Casos de uso
Amigo secreto e trocas de presentes
Calcule a probabilidade de um sorteio aleatório não deixar ninguém designado a si mesmo, ou conte os desarranjos válidos, antes de rodar uma atribuição de presente ou de parceiro.
Disciplinas de combinatória
Produza valores !n exatos e a probabilidade de inclusão–exclusão para montar gabaritos ou conferir fórmulas derivadas contra a série de forma fechada.
Projeto de testes aleatorizados
Quantifique quão provável é que uma permutação embaralhada deixe um item no lugar, útil ao gerar embaralhamentos que devem mover todos os elementos.
Perguntas frequentes
O que é um subfatorial?
O subfatorial ! n é o número de desarranjos de n itens — permutações em que nenhum item permanece em sua posição original — dado por n! ·Σ(−1)^k/k!.
Por que !0 é igual a 1 e !1 é igual a 0?
A permutação vazia de zero itens é, por vacuidade, um desarranjo, então ! 0 = 1; um único item não pode evitar seu próprio lugar, então ! 1 = 0.
O que é a probabilidade de desarranjo?
É value / n!, a chance de uma permutação aleatória ser um desarranjo. Ela converge rapidamente para 1/e ≈ 0.367879 à medida que n aumenta.
Quais valores de n são permitidos?
n deve ser um inteiro de 0 a 20; o limite mantém a contagem exata em precisão dupla.
De quantas formas 5 pessoas podem sortear nomes sem que ninguém tire o próprio?
De 44 formas, o subfatorial de 5. Para quatro pessoas são 9 dos 24 sorteios possíveis, e a calculadora transforma essa proporção em probabilidade, 0,375, para você avaliar um amigo secreto antes de fazer o sorteio.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/math/subfactorial \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":4}'const res = await fetch("https://api.kit.forhosting.com/math/subfactorial", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/subfactorial",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/subfactorial", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/subfactorial", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"n": 4
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.subfactorial",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A probabilidade de desarranjo e sua ligação com 1/e
(e definida como 1 para n = 0). 4 = 9 de 4! = 24 dá 0.375, e por volta de n = 6 ou 7 o valor é indistinguível de 1/e na precisão do dia a dia.
Faixa de entrada, arredondamento e validação
Um valor não inteiro, um valor negativo ou n acima de 20 gera um erro tipado invalid_input com a mensagem "n inválido", permitindo que um formulário ou cliente reaja pelo código de erro sem analisar o texto.
Perguntas técnicas
É grátis e como faço para automatizar?
O widget tier A roda grátis no seu navegador; a API determinística retorna o mesmo JSON de value e probability a partir de US$ 0,002 por chamada.