Como muchas personas, he estado explorando muchos programas de televisión nuevos durante la pandemia. Recientemente descubrí un programa de juegos británico llamado Countdown , donde los concursantes juegan dos tipos de juegos:a palabras juego, donde intentan hacer la palabra más larga de un revoltijo de letras y un números juego, donde calculan un número objetivo a partir de una selección aleatoria de números. Debido a que disfruto de las matemáticas, me sentí atraído por el juego de los números.
El juego de números puede ser una adición divertida a su próxima noche de juegos en familia, así que quería compartir mi propia variación. Comienzas con una colección de números aleatorios, divididos en números "pequeños" del 1 al 10 y números "grandes" que son 15, 20, 25, y así sucesivamente hasta el 100. Eliges cualquier combinación de seis números, tanto grandes como pequeños. números.
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
A continuación, genera un número "objetivo" aleatorio entre 200 y 999. Luego, utilice operaciones aritméticas simples con sus seis números para tratar de calcular el número objetivo usando cada número "pequeño" y "grande" no más de una vez. Obtienes la mayor cantidad de puntos si calculas exactamente el número objetivo y menos puntos si puedes llegar a 10 del número objetivo.
Por ejemplo, si sus números aleatorios fueran 75, 100, 2, 3, 4 y 1, y su número objetivo fuera 505, podría decir 2+3=5 , 5×100=500 , 4+1=5 y 5+500=505 . O más directamente:(2 +3 )×100 + 4 + 1 =
Aleatorizar listas en la línea de comandos
Descubrí que la mejor manera de jugar este juego en casa es sacar cuatro números "pequeños" de un grupo de 1 a 10 y dos números "grandes" de múltiplos de cinco de 15 a 100. Puedes usar la línea de comando de Linux para crear estos números aleatorios para usted.
Comencemos con los números "pequeños". Quiero que estos estén en el rango de 1 a 10. Puede generar una secuencia de números usando Linux seq
dominio. Puede ejecutar seq
algunas maneras diferentes, pero la forma más simple es proporcionar los números iniciales y finales de la secuencia. Para generar una lista del 1 al 10, puede ejecutar este comando:
$ seq 1 10
1
2
3
4
5
6
7
8
9
10
Para aleatorizar esta lista, puede usar Linux shuf
comando ("shuffle"). shuf
aleatorizará el orden de lo que le des, generalmente un archivo. Por ejemplo, si envía la salida de seq
comando al shuf
comando, recibirá una lista aleatoria de números entre 1 y 10:
$ seq 1 10 | shuf
3
6
8
10
7
4
5
2
1
9
Para seleccionar solo cuatro números aleatorios de una lista del 1 al 10, puede enviar el resultado al head
comando, que imprime las primeras líneas de su entrada. Usa el -4
opción para especificar que head
debe imprimir solo las primeras cuatro líneas:
$ seq 1 10 | shuf | head -4
6
1
8
4
Tenga en cuenta que esta lista es diferente del ejemplo anterior porque shuf
generará un orden aleatorio cada vez.
Ahora puede dar el siguiente paso para generar la lista aleatoria de números "grandes". El primer paso es generar una lista de posibles números a partir del 15, aumentando de cinco en cinco, hasta llegar a 100. Puede generar esta lista con Linux seq
dominio. Para incrementar cada número en cinco, inserte otra opción para el seq
comando para indicar el paso :
$ seq 15 5 100
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100
Y al igual que antes, puede aleatorizar esta lista y seleccionar dos de los números "grandes":
$ seq 15 5 100 | shuf | head -2
75
40
Genera un número aleatorio con Bash
Supongo que podría usar un método similar para seleccionar el número objetivo del juego entre 200 y 999. Pero la solución más simple para generar un único valor aleatorio es usar RANDOM
variable directamente en Bash. Cuando hace referencia a esta variable integrada, Bash genera un gran número aleatorio. Para poner esto en el rango de 200 a 999, primero debe colocar el número aleatorio en el rango de 0 a 799 y luego sumar 200.
Para poner un número aleatorio en un rango específico que comienza en 0, puede usar el módulo operación aritmética. Modulo calcula el resto después de dividir dos números. Si comencé con 801 y dividí por 800, el resultado es 1 con un resto de 1 (el módulo es 1). Dividir 800 por 800 da 1 con un resto de 0 (el módulo es 0). Y dividir 799 por 800 da como resultado 0 con un resto de 799 (el módulo es 799).
Bash admite la expansión aritmética con $(( ))
construir. Entre los dobles paréntesis, Bash realizará operaciones aritméticas con los valores que proporcione. Para calcular el módulo de 801 dividido por 800 y luego sumar 200, debe escribir:
$ echo $(( 801 % 800 + 200 ))
201
Con esa operación, puede calcular un número objetivo aleatorio entre 200 y 999:
$ echo $(( RANDOM % 800 + 200 ))
673
Quizás se pregunte por qué usé RANDOM
en lugar de $RANDOM
en mi declaración de Bash. En la expansión aritmética, Bash expandirá automáticamente cualquier variable dentro de los paréntesis dobles. No necesitas el $
en el $RANDOM
variable para hacer referencia al valor de la variable porque Bash lo hará por usted.
Jugando al juego de los números
Pongamos todo eso junto para jugar el juego de los números. Genere dos números "grandes" aleatorios, cuatro valores "pequeños" aleatorios y el valor objetivo:
$ seq 15 5 100 | shuf | head -2
75
100
$ seq 1 10 | shuf | head -4
4
3
10
2
$ echo $(( RANDOM % 800 + 200 ))
868
Mis números son 75 ,
Puedo acercarme al número objetivo si realizo estas operaciones aritméticas usando cada uno de los números "pequeños" y "grandes" no más de una vez:
10×75 = 750
750+100 = 850
and:
4×3 = 12
850+12 = 862
862+2 = 864
Eso es sólo cuatro de distancia, ¡no está mal! Pero encontré esta forma de calcular el número exacto usando cada número aleatorio no más de una vez:
4×2 = 8
8×100 = 800
and:
75-10+3 = 68
800+68 = 868
O podría realizar estos cálculos para obtener el número objetivo exactamente. Esto usa solo cinco de los seis números aleatorios:
4×3 = 12
75+12 = 87
and:
87×10 = 870
870-2 = 868
Da la Cuenta atrás Prueba el juego de números y cuéntanos qué tan bien te fue en los comentarios.