Números aleatorios sen repeticións

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:

Números aleatorios sen 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:

Números aleatorios sen repeticións

Na seguinte columna presentamos a función RANKpara determinar a posición na clasificación para cada número aleatorio recibido:

Números aleatorios sen repeticións

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:

Números aleatorios sen repeticións

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

Deixe unha resposta