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!!

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