10 agosto, 2026

GENERAR NÚMEROS ALEATORIOS UNICOS COMPRENDIDOS EN UN RANGO CON POWER APPS

Hola a todos!

Una de las aplicaciones que más me gusta crear cuando estoy trabajando con código son los números aleatorios únicos. Hay muchas formas y complementos para realizar esta tarea. Se puede hacer en VBA, en Typescript, en Excel, en Python, etc… y también en Power Fx (Power Apps).

Para hacer los voy a mostrar la aplicación que he creado y cómo funciona:

La aplicación funciona de manera muy sencillo, solo hay que poner la cantidad de número que queremos generar (Números a generar) y el rango de números que vamos a utilizar (Desde – Hasta) y pulsar el botón que mostrará la información en cada una de las galerías.

Os dejo el código del botón comentado:

Clear(colRangoNum);;
Clear(colNumAleats);;
Clear(colNumerosAleOrd);;
Clear(colAgrupada);;

// Establece el número total de números aleatorios únicos a generar
Set(varTotNum; Value(TextInput1.Text));;

// Crea la colección con el rango completo de números
ForAll(
    Sequence(Value(TextInput3.Text) - Value(TextInput2.Text) + 1; Value(TextInput2.Text); 1);
    Collect(colRangoNum; {Numero: Value})
);;

// Selecciona números aleatorios únicos del rango
ForAll(
    Sequence(varTotNum);
    With(
        {aleatorio: First(Shuffle(colRangoNum)).Numero};
        Collect(colNumAleats; {Numero: aleatorio});;
        RemoveIf(colRangoNum; Numero = aleatorio) 
    )
);;

//Mostramos datos ordenados
ClearCollect(colNumerosAleOrd;(Sort(colNumAleats;Numero;SortOrder.Ascending)));;

En el código podemos ver cómo creamos varias colecciones, donde:

  • colRangoNum – Creamos una colección a través de generar una secuencia de números con un rango suficiente de números para seleccionar los únicos.
  • colNumAleats – Creamos una colección con el resultado de haber obtenido los únicos.
  • colNumerosAleOrd – creamos una colección ordenada.

Las dos últimas colecciones debemos incluir las en la propiedad ítems de cada galería. En una se mostrarán los números aleatorios únicos tal y como salen y en la otra se mostrarán ordenamos con la función Sort, en la imagen lo podéis comprobar:

Pero adicionalmente necesitaba comprobar que no se generaba ningún duplicado, y para ello he tenido que crear una nueva colección:


//Contar el número de veces que se repite un número
ClearCollect(colAgrupada;
AddColumns(GroupBy(colNumAleats;"Numero";"Grupo");
"Conteo";CountRows(Grupo)));;

//Pasamos resultado de la suma a la variable Control
Set(Control;Sum(colAgrupada;Conteo))

Y esto es lo que genera esa colección, donde en conteo contamos las veces que se repite un número en nuestra colección. En este caso siempre debe ser 1.

Y para hacer la comprobación, en un label tenemos que comparar que la suma de conteo, es decir la variable que hemos denominado Control y que debe ser igual al total de números que vamos a generar y que he hemos indicado en el TextInput1.

Este es el código a incluir:

If(
    Value(TextInput1.Text) >= Control And !IsBlank(Control);"Sin Duplicados";If(TextInput1.Text="" And IsBlank(Control);"");"Con duplicados"
)

Y con esto ya podemos generar nuestras colecciones de números aleatorios únicos y ordenados.

Espero que sea de utilidad!!

Comparte este post

Un comentario en «GENERAR NÚMEROS ALEATORIOS UNICOS COMPRENDIDOS EN UN RANGO CON POWER APPS»

  1. Yo lo hice en excel y con un adicional evito ( siempre) una posible repetición.
    Luego confirmo con el contar repeticiones.
    Saludos

Los comentarios están cerrados.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies