Números aleatorios sin repeticiones

Formulación del problema

Supongamos que necesitamos crear un conjunto de números aleatorios enteros sin repeticiones en un rango de valores dado. Ejemplos sobre la marcha:

  • generar códigos aleatorios únicos para productos o usuarios
  • asignar personas a tareas (cada una al azar de la lista)
  • permutación de palabras en la consulta de búsqueda (hola seo-shnikam)
  • jugar lotería, etc.

Método 1. Sencillo

Para empezar, consideremos una opción simple: necesitamos obtener un conjunto aleatorio de 10 números enteros del 1 al 10. Usando la función integrada en Excel ENTRE EL CASO (BORDE ENTRE) la singularidad no está garantizada. Si lo ingresa en una celda de hoja y lo copia 10 celdas hacia abajo, las repeticiones pueden ocurrir fácilmente:

Números aleatorios sin repeticiones

Por lo tanto, iremos por el otro lado.

Todas las versiones de Excel tienen una función. RANK (SONÓ), destinado a clasificar o, en otras palabras, determinar la primera posición de un número en un conjunto. El número más grande de la lista tiene rango=1, el segundo en la parte superior tiene rango=2, y así sucesivamente.

Ingresemos la función en la celda A2 SLCHIS (ALEATORIO) sin argumentos y copie la fórmula 10 celdas hacia abajo. Esta función nos generará un conjunto de 10 números fraccionarios aleatorios del 0 al 1:

Números aleatorios sin repeticiones

En la siguiente columna introducimos la función RANKpara determinar la posición en el ranking de cada número aleatorio recibido:

Números aleatorios sin repeticiones

Obtenemos en la columna B lo que queríamos: cualquier número deseado de enteros aleatorios no repetidos del 1 al 10.

En teoría, puede surgir una situación en la que SLCHIS nos dará dos números aleatorios idénticos en la columna A, sus rangos coincidirán y obtendremos una repetición en la columna B. Sin embargo, la probabilidad de tal escenario es extremadamente pequeña, dado que la precisión es de 15 decimales.

Método 2. Complicado

Este método es un poco más complicado, pero usa solo una fórmula de matriz. Digamos que necesitamos crear una lista de 9 números enteros aleatorios que no se repiten en el rango de 1 a 50 en una hoja.

Ingrese la siguiente fórmula en la celda A2, haga clic al final Ctrl + Shift + Enter (¡para ingresarlo como una fórmula matricial!) y copie la fórmula hasta el número deseado de celdas:

Números aleatorios sin repeticiones

Método 3. Macro

Y, por supuesto, puede resolver el problema utilizando la programación en Visual Basic. En uno de los artículos antiguos sobre el muestreo aleatorio, ya cité la función de macro de matriz Lotto, que produce la cantidad requerida de números aleatorios que no se repiten de un intervalo dado.

  • Cómo contar la cantidad de valores únicos en un rango
  • Selección aleatoria de elementos de una lista

Deje un comentario