jueves, 30 de septiembre de 2021

Crear números aleatorios desde la consola

Se me ha ocurrido, quizás para hacer más liviana mi ‘rentreé’ en este blog, que lo había abandonado desde el mes de julio, que hoy podría poner, para acabar septiembre, otro pequeño apunte, o tip, basándome en lo que leí hace unos días en el blog del amigo Victorhck, que está haciendo un interesante recorrido por algunos comandos de consola.
Me refiero a la posibilidad de crear directamente números aleatorios, por consola, a través de un sencillo comando que se llama ‘shuf’.

En realidad shuf es un comando complejo, que vale tanto para números como para cadenas de texto o para archivos, y que el que quiera profundizar puede verlo, por ejemplo, aquí mismo… Pero yo me voy a ceñir, solamente, a lo que indico en el titulo, que, aunque intranscendente, me ha resultado útil.
Y digo ésto porque, desde el famoso confinamiento por el coronavirus, decidí hacer mis apuestas de lotería, bonoloto, euromillón, etc por internet, lo que me resultó muy cómodo, e incluso económico, porque me ceñí a un plan, definido, de gastos/inversión…
Así que veamos este invento, o sea, la orden para crear una secuencia de números aleatorios, con shuf.

Esta orden, en su forma más simple, tiene esta estructura
shuf -i [intervalo] -n [número de extracciones]
Por ejemplo, si quiero sacar, aleatoriamente, una serie de 3 números, del 1 al 100, escribiría esta orden…
shuf -i 1-100 -n 3
(se ve, copiándolo en una consola, que cada vez que se ejecuta salen tres números entre 1 y 100. Al ser aleatorios, sin ordenar, claro).

Así que yo me he montado unos pequeños scripts para hacer apuestas. Y, por ejemplo, el script de nombre ‘primi’, que me vale para la primitiva y para la bonoloto, lo conformé así…
#!/bin/bash
echo 'Números de Primitiva o Bonoloto'
shuf -i 1-49 -n 6 && echo 'y reintegro…' && shuf -i 0-9 -n 1

Bueno, pero como soy algo ‘perfeccionista’, en realidad ahora lo tengo así…
#!/bin/bash
echo "\033[1;4;33mnúmeros de Primitiva o Bonoloto\033[0m"
shuf -i 1-49 -n 6
echo "\033[1;33;5my reintegro…\033[0m"
shuf -i 0-9 -n 1

porque asi me aprovecho de las propiedades de la secuencia de escape del comando ‘echo’... « “\033[parámetrosmtexto” ». 
Estos parámetros, si son varios, hay que escribirlos separados por ‘ ; ‘ o sea por punto y coma y pueden ser, por ejemplo...
1’, que ordena que el texto salga en negrita,
4’ para que salga subrayado
(‘3’ sería ‘en cursiva’ y ‘5’, para que el texto ‘parpadee’)
y, por otro lado, hay un código de colores que va del 30 al 37, para color del texto, y del 40 al 47 para el color de fondo (por ejemplo 31(o 41) es rojo, 32 (0 42) verde, 33(o 43) granate, etc).

Y, por cierto, para volver al formato por defecto, la orden « \33[0m » pone fin a la secuencia ordenada.

Bueno pues, puestos a ello, también tengo el script para el Euromillones (‘euro’)
#!/bin/bash
echo 'Números de Euromillones'
shuf -i 1-50 -n 5 && echo 'y estrellas...' && shuf -i 1-12 -n 2

para el Gordo de la Primitiva (‘gord’)
#!/bin/bash
echo 'Números del Gordo de la Primitiva'
shuf -i 1-54 -n 5 && echo 'y número clave...' && shuf -i 0-9 -n 1

e incluso para la Lotería Nacional (’lot’)
#!/bin/bash
echo 'Número para la Loteria Nacional'
shuf -i 00000-99999 -n 1

que los lanzo (tras los permisos oportunos) con la simple orden...
sh nombre_script
(Y que, por supuesto, en algún rato libre los personalizaré, dándoles el formato que me apetezca, con la secuencia de escape que antes indicaba).
Divertido ¿No?

No hay comentarios:

Publicar un comentario