Formulación do problema
Supoñamos que necesitamos crear un conxunto de números aleatorios enteiros sen repeticións nun determinado intervalo de valores. Exemplos en movemento:
- xerando códigos aleatorios únicos para produtos ou usuarios
- asignar persoas a tarefas (cada unha de forma aleatoria da lista)
- permutación de palabras na consulta de busca (hola seo-shnikam)
- xogar á lotería, etc.
Método 1. Simple
Para comezar, consideremos unha opción sinxela: necesitamos obter un conxunto aleatorio de 10 enteiros de 1 a 10. Usando a función integrada en Excel ENTRE O CASO (BORDE ENTRE) a singularidade non está garantida. Se o introduces nunha cela da folla e cópiao 10 celas, pode ocorrer facilmente repeticións:
Polo tanto, iremos por outro lado.
Todas as versións de Excel teñen unha función RANK (RANG), destinado a clasificar ou, noutras palabras, a determinar a posición superior dun número nun conxunto. O número máis grande da lista ten rango=1, o segundo da parte superior ten rango=2, etc.
Imos introducir a función na cela A2 SLCHIS (RAND) sen argumentos e copie a fórmula en 10 celas. Esta función xeraranos un conxunto de 10 números fraccionarios aleatorios do 0 ao 1:
Na seguinte columna presentamos a función RANKpara determinar a posición na clasificación para cada número aleatorio recibido:
Obtemos na columna B o que queriamos: calquera número desexado de enteiros aleatorios non repetitivos de 1 a 10.
Puramente teoricamente, pode xurdir unha situación cando SLCHIS daranos dous números aleatorios idénticos na columna A, os seus rangos coincidirán e obteremos unha repetición na columna B. Non obstante, a probabilidade de tal escenario é extremadamente pequena, dado que a precisión é de 15 cifras decimais.
Método 2. Complicado
Este método é un pouco máis complicado, pero usa só unha fórmula matricial. Digamos que necesitamos crear unha lista de 9 enteiros aleatorios non repetitivos no rango de 1 a 50 nunha folla.
Introduza a seguinte fórmula na cela A2, prema ao final Ctrl + Maiús + Entrar (para introducilo como unha fórmula matricial!) e copie a fórmula ata o número de celas desexado:
Método 3. Macro
E, por suposto, podes resolver o problema usando a programación en Visual Basic. Nun dos vellos artigos sobre a mostraxe aleatoria, xa citei a función de macro matriz Lotto, que produce o número necesario de números aleatorios non repetitivos dun intervalo determinado.
- Como contar o número de valores únicos nun intervalo
- Selección aleatoria de elementos dunha lista