Calculadora de permutaciones y combinaciones
Averigüe de cuántas maneras se pueden elegir r elementos de un total de n: escoger 2 de 5 da 10 combinaciones si el orden no importa, mientras que las permutaciones cuentan cada orden por separado. Resultados enteros exactos para n de hasta 1000. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Elementos totales (n)
- 5
- Elementos seleccionados (r)
- 2
- Modo de cálculo
- C
- Resultado
- 10
Introduce n, r y elige permutación o combinación para obtener un entero exacto como cadena.
Significado de P y C
P(n,r) cuenta selecciones ordenadas de r elementos entre n sin reemplazo, y C(n,r) cuenta selecciones sin orden. Ambos exigen enteros n y r entre cero y mil con r menor o igual que n. El modo acepta P, p, permutation, perm para ordenadas y C, c, combination, comb para no ordenadas, y normaliza el eco a una sola letra mayúscula.
Los resultados no llaman a la red, no leen el reloj del sistema y no dependen del locale del anfitrión.
Productos BigInt exactos
Las permutaciones multiplican el producto descendente desde n durante r factores. Las combinaciones usan el mismo camino con división entera exacta por cada índice sucesivo, tras opcionalmente sustituir r por min(r, n-r) para menos iteraciones. Se rechazan floats, booleanos y ceros a la izquierda como 01 en el campo culpable.
Los resultados no llaman a la red, no leen el reloj del sistema y no dependen del locale del anfitrión.
Qué valores acepta y cuáles rechaza
Un menos inicial se reporta como negativo antes que el nombre del campo. Valores por encima de mil fallan en n o r. Cuando r es mayor que n el match es range.
Cadenas vacías, signos más y puntos decimales son error de formato. Estas reglas mantienen el contrato corto para que oráculos independientes coincidan en todos los vectores firmados sin leer el código. Los resultados no llaman a la red, no leen el reloj del sistema y no dependen del locale del anfitrión.
Salida para pipelines
Las respuestas de éxito incluyen siempre los enteros normalizados n y r, mode como P o C, result como cadena decimal mínima y formula como C(5,2) para mostrar. La versión uno omite repeticiones, multinomiales y no enteros para que la superficie firmada sea auditable. Los resultados no llaman a la red, no leen el reloj del sistema y no dependen del locale del anfitrión.
Qué puede hacer con ella
Deberes
Comprobar nPr y nCr del libro al instante.
Sorteos
Contar extracciones sin orden con C(n,r).
Asientos
Contar asignaciones ordenadas con P(n,r).
Tests CI
Fijar cadenas exactas en integración continua.
Preguntas frecuentes
¿Qué diferencia hay entre una permutación y una combinación?
La permutación cuenta selecciones ordenadas, así que elegir A y luego B no es lo mismo que B y luego A. La combinación ignora el orden. Escoger 2 de 5 da 10 combinaciones y el doble de permutaciones, porque cada pareja admite dos órdenes.
¿Cuál uso para calcular sorteos de lotería?
Use la combinación, porque el orden en que salen los números no cambia el boleto. Para repartir asientos o los puestos de un podio, donde el orden sí importa, use la permutación.
¿Puede r ser mayor que n?
No. No se pueden elegir más elementos de los que hay, así que r debe ser igual o menor que n. Ambos deben ser enteros de 0 a 1000, y cualquier valor fuera de ese rango se rechaza.
¿Cuenta selecciones con repetición?
No. Todos los cálculos suponen que un elemento ya elegido no puede volver a elegirse. Las selecciones con repetición y los recuentos multinomiales no están incluidos, así que compruebe que su problema es sin reemplazo.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/permutation-combination \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5,"r":2,"mode":"C"}'const res = await fetch("https://api.kit.forhosting.com/dev/permutation-combination", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 5,
"r": 2,
"mode": "C"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/permutation-combination",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 5,
"r": 2,
"mode": "C"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/permutation-combination", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":5,"r":2,"mode":"C"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":5,"r":2,"mode":"C"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/permutation-combination", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"n": 5,
"r": 2,
"mode": "C"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.permutation_combination",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_n | 1000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Significado de P y C
Un modo inválido tras trim devuelve invalid_input tipado en mode.
Productos BigInt exactos
Como cada paso vive en BigInt, valores como P(1000,3) y C(30,5) son cadenas decimales exactas sin notación científica ni sorpresas IEEE.
Errores tipados y límites
Si faltan n, r o mode se produce invalid_input con un match claro.
Preguntas técnicas
¿Puede r superar n?
No. Devuelve range.
¿Se admiten decimales?
No en v1. Solo enteros 0..1000.
¿Hasta cuánto n?
Hasta 1000 inclusive.
¿El resultado es number?
Es una cadena decimal del entero exacto.
¿Gratis en el navegador?
Sí. Widget local; API usa $0.002.
¿Usa Math.pow?
No. Solo productos BigInt y divisiones exactas.