Come molte persone, ho esplorato molti nuovi programmi TV durante la pandemia. Di recente ho scoperto un game show britannico chiamato Countdown , in cui i concorrenti giocano a due tipi di giochi:a parole gioco, in cui cercano di ricavare la parola più lunga da un miscuglio di lettere e numeri gioco, in cui calcolano un numero target da una selezione casuale di numeri. Poiché mi piace la matematica, mi sono ritrovato attratto dal gioco dei numeri.
Il gioco dei numeri può essere un'aggiunta divertente alla tua prossima serata di gioco in famiglia, quindi volevo condividerne la mia variazione. Inizi con una raccolta di numeri casuali, divisi in numeri "piccoli" da 1 a 10 e numeri "grandi" che sono 15, 20, 25 e così via fino a 100. Scegli qualsiasi combinazione di sei numeri sia grandi che piccoli numeri.
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Successivamente, generi un numero "target" casuale compreso tra 200 e 999. Quindi usa semplici operazioni aritmetiche con i tuoi sei numeri per provare a calcolare il numero target utilizzando ogni numero "piccolo" e "grande" non più di una volta. Ottieni il maggior numero di punti se calcoli esattamente il numero target e meno punti se riesci ad arrivare entro 10 dal numero target.
Ad esempio, se i tuoi numeri casuali erano 75, 100, 2, 3, 4 e 1 e il tuo numero target era 505, potresti dire 2+3=5 , 5×100=500 , 4+1=5 e 5+500=505 . O più direttamente:(2 +3 )×100 + 4 + 1 =505 .
Randomizzare gli elenchi sulla riga di comando
Ho scoperto che il modo migliore per giocare a questo gioco a casa è estrarre quattro numeri "piccoli" da un pool da 1 a 10 e due numeri "grandi" da multipli di cinque da 15 a 100. Puoi usare la riga di comando di Linux per creare questi numeri casuali per te.
Cominciamo con i numeri "piccoli". Voglio che questi siano nell'intervallo da 1 a 10. Puoi generare una sequenza di numeri usando Linux seq
comando. Puoi eseguire seq
in alcuni modi diversi, ma la forma più semplice è fornire i numeri di inizio e fine per la sequenza. Per generare un elenco da 1 a 10, puoi eseguire questo comando:
$ seq 1 10
1
2
3
4
5
6
7
8
9
10
Per randomizzare questo elenco, puoi usare Linux shuf
comando ("shuffle"). shuf
randomizzerà l'ordine di qualsiasi cosa gli dai, di solito un file. Ad esempio, se invii l'output di seq
comando al shuf
comando, riceverai un elenco randomizzato di numeri compresi tra 1 e 10:
$ seq 1 10 | shuf
3
6
8
10
7
4
5
2
1
9
Per selezionare solo quattro numeri casuali da un elenco da 1 a 10, puoi inviare l'output al head
comando, che stampa le prime righe del suo input. Usa il -4
opzione per specificare quel head
dovrebbe stampare solo le prime quattro righe:
$ seq 1 10 | shuf | head -4
6
1
8
4
Nota che questo elenco è diverso dall'esempio precedente perché shuf
genererà un ordine casuale ogni volta.
Ora puoi fare il passaggio successivo per generare l'elenco casuale di numeri "grandi". Il primo passo è generare un elenco di possibili numeri che iniziano da 15, con incrementi di cinque, fino a raggiungere 100. Puoi generare questo elenco con il seq
di Linux comando. Per incrementare ogni numero di cinque, inserisci un'altra opzione per il seq
comando per indicare il passaggio :
$ seq 15 5 100
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100
E proprio come prima, puoi randomizzare questo elenco e selezionare due dei numeri "grandi":
$ seq 15 5 100 | shuf | head -2
75
40
Genera un numero casuale con Bash
Suppongo che potresti usare un metodo simile per selezionare il numero di destinazione del gioco dall'intervallo 200 a 999. Ma la soluzione più semplice per generare un singolo valore casuale è usare il RANDOM
variabile direttamente in Bash. Quando fai riferimento a questa variabile incorporata, Bash genera un numero casuale grande. Per metterlo nell'intervallo da 200 a 999, devi prima inserire il numero casuale nell'intervallo da 0 a 799, quindi aggiungere 200.
Per inserire un numero casuale in un intervallo specifico che inizia da 0, puoi utilizzare il modulo operazione aritmetica. Modulo calcola il resto dopo aver diviso due numeri. Se ho iniziato con 801 e diviso per 800, il risultato è 1 con un resto di 1 (il modulo è 1). Dividendo 800 per 800 si ottiene 1 con resto di 0 (il modulo è 0). E dividendo 799 per 800 si ottiene 0 con resto di 799 (il modulo è 799).
Bash supporta l'espansione aritmetica con $(( ))
costruire. Tra le doppie parentesi, Bash eseguirà operazioni aritmetiche sui valori forniti. Per calcolare il modulo di 801 diviso per 800, quindi aggiungere 200, digitare:
$ echo $(( 801 % 800 + 200 ))
201
Con tale operazione, puoi calcolare un numero target casuale compreso tra 200 e 999:
$ echo $(( RANDOM % 800 + 200 ))
673
Potresti chiederti perché ho usato RANDOM
invece di $RANDOM
nella mia dichiarazione di Bash. Nell'espansione aritmetica, Bash espanderà automaticamente qualsiasi variabile all'interno delle doppie parentesi. Non hai bisogno del $
sul $RANDOM
variabile per fare riferimento al valore della variabile perché Bash lo farà per te.
Giocare il gioco dei numeri
Mettiamo tutto insieme per giocare al gioco dei numeri. Genera due numeri "grandi" casuali, quattro valori "piccoli" casuali e il valore target:
$ seq 15 5 100 | shuf | head -2
75
100
$ seq 1 10 | shuf | head -4
4
3
10
2
$ echo $(( RANDOM % 800 + 200 ))
868
I miei numeri sono 75 , 100 , 4 , 3 , 10 e 2 e il mio numero target è 868 .
Posso avvicinarmi al numero di destinazione se eseguo queste operazioni aritmetiche utilizzando ciascuno dei numeri "piccolo" e "grande" non più di una volta:
10×75 = 750
750+100 = 850
and:
4×3 = 12
850+12 = 862
862+2 = 864
Sono solo quattro di distanza, non male! Ma ho trovato questo modo per calcolare il numero esatto usando ogni numero casuale non più di una volta:
4×2 = 8
8×100 = 800
and:
75-10+3 = 68
800+68 = 868
Oppure potrei eseguire questi calcoli per ottenere esattamente il numero di destinazione. Questo utilizza solo cinque dei sei numeri casuali:
4×3 = 12
75+12 = 87
and:
87×10 = 870
870-2 = 868
Dai il Conto alla rovescia prova a giocare con i numeri e facci sapere come sei andato nei commenti.