Hola a todos,
Parece que este va a ser el último post del año!, y lo voy a acabar con typescript. El tema que quiero tratar es el de la generación de números aleatorios con typescript, y aunque ya lo traté en este post: GENERANDO SUBCADENAS CON CARACTERES ALFANUMÉRICOS ALEATORIOS Y TYPESCRIPT creo que la función necesitaba una actualización.
Lo quiero hacer es que cuando ejecute la función pueda indicar no solo el número de caracteres de la función sino la cantidad de cadenas o códigos a generar. Es decir, que si escribo la función así, me tendrá que generar 10 filas de 4 caracteres aleatorios cada una de ellas:

El motivo del post y del ejercicio no es tanto el de generar los caracteres aleatorios sino el de ser capaces de derramar el resultado de una matriz y transponer los resultados en vertical sin usar la función nativa de Excel.
Para ello, el código que he programado es el siguiente:
/**
* @customfunction
* @returns {string[][]}
*/
function ALFANUM_RANDOM(nNumero, nCifras) {
var numeros: string = '0123456789';
var letras = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ';
var simbolos = '!"#$%&()*+,-./;<=>?@[\]^_`{|}~'
var sCadena = (numeros + letras + simbolos)
var lCadena = sCadena.length
var miCadena = ''
//primer loop numero de códigos segundo loop numero de caracteres
for (var j = 0; j < nCifras; j++) {
for (var i = 0; i < nNumero; i++) {
miCadena += sCadena.charAt(Math.floor(Math.random() * lCadena));
}
miCadena = miCadena + ':'
}
var misCadenas = miCadena.slice(0, -1).toString().split(':')
//creamos función para transponer el resultado en vertical
var transponer = misCadenas => misCadenas[0].map((col, c) => misCadenas.map((row, r) => misCadenas[r][c]))
//mostramos resultado de la función
return transponer ([misCadenas])
};
Ojo, no va a generar longitudes aleatorias en cada fila, siempre tendrá la longitud que le pasemos por el primer argumento (nNumero). Si lo necesitáis de otra forma, podéis utilizar la función del primer post y combinarla con aleatorio.entre y os lo generará de esa forma.
Y esto es todo, espero que os haya resultado de interés.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies