Comme beaucoup de gens, j'ai exploré de nombreuses nouvelles émissions de télévision pendant la pandémie. J'ai récemment découvert un jeu télévisé britannique appelé Countdown , où les participants jouent à deux types de jeux :un jeu de mots jeu, où ils essaient de faire le mot le plus long à partir d'un fouillis de lettres et de chiffres jeu, où ils calculent un nombre cible à partir d'une sélection aléatoire de nombres. Parce que j'aime les mathématiques, j'ai été attiré par le jeu des nombres.
Le jeu de nombres peut être un ajout amusant à votre prochaine soirée de jeux en famille, alors je voulais partager ma propre variante. Vous commencez avec une collection de nombres aléatoires, divisés en "petits" nombres de 1 à 10 et en "grands" nombres qui sont 15, 20, 25, et ainsi de suite jusqu'à 100. Vous choisissez n'importe quelle combinaison de six nombres à la fois grands et petits nombres.
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Ensuite, vous générez un nombre "cible" aléatoire entre 200 et 999. Ensuite, utilisez des opérations arithmétiques simples avec vos six nombres pour essayer de calculer le nombre cible en utilisant chaque "petit" et "grand" nombre pas plus d'une fois. Vous obtenez le plus grand nombre de points si vous calculez exactement le nombre cible et moins de points si vous pouvez obtenir moins de 10 du nombre cible.
Par exemple, si vos nombres aléatoires étaient 75, 100, 2, 3, 4 et 1, et que votre nombre cible était 505, vous pourriez dire 2+3=5 , 5×100=500 , 4+1=5 , et 5+500=505 . Ou plus directement :(2 +3 )×100 + 4 + 1 =505 .
Listes aléatoires sur la ligne de commande
J'ai trouvé que la meilleure façon de jouer à ce jeu à la maison est de tirer quatre "petits" nombres d'un pool de 1 à 10 et deux "grands" nombres de multiples de cinq de 15 à 100. Vous pouvez utiliser la ligne de commande Linux pour créer ces nombres aléatoires pour vous.
Commençons par les "petits" nombres. Je veux que ceux-ci soient compris entre 1 et 10. Vous pouvez générer une séquence de nombres en utilisant Linux seq
commande. Vous pouvez exécuter seq
de différentes manières, mais la forme la plus simple consiste à fournir les numéros de début et de fin de la séquence. Pour générer une liste de 1 à 10, vous pouvez exécuter cette commande :
$ seq 1 10
1
2
3
4
5
6
7
8
9
10
Pour randomiser cette liste, vous pouvez utiliser le Linux shuf
("mélanger"). shuf
randomisera l'ordre de tout ce que vous lui donnez, généralement un fichier. Par exemple, si vous envoyez la sortie du seq
commande au shuf
commande, vous recevrez une liste aléatoire de nombres entre 1 et 10 :
$ seq 1 10 | shuf
3
6
8
10
7
4
5
2
1
9
Pour sélectionner seulement quatre nombres aléatoires dans une liste de 1 à 10, vous pouvez envoyer la sortie au head
commande, qui imprime les premières lignes de son entrée. Utilisez le -4
option pour spécifier que head
ne doit imprimer que les quatre premières lignes :
$ seq 1 10 | shouf | tête -4
6
1
8
4
Notez que cette liste est différente de l'exemple précédent car shuf
générera une commande aléatoire à chaque fois.
Vous pouvez maintenant passer à l'étape suivante pour générer la liste aléatoire des "grands" nombres. La première étape consiste à générer une liste de nombres possibles commençant à 15, incrémentés de cinq, jusqu'à ce que vous atteigniez 100. Vous pouvez générer cette liste avec le Linux seq
commande. Pour incrémenter chaque nombre de cinq, insérez une autre option pour le seq
commande pour indiquer l'étape :
$ seq 15 5 100
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100Et comme avant, vous pouvez randomiser cette liste et sélectionner deux des "grands" nombres :
$ seq 15 5 100 | shouf | tête -2
75
40Générer un nombre aléatoire avec Bash
Je suppose que vous pourriez utiliser une méthode similaire pour sélectionner le nombre cible du jeu dans la plage de 200 à 999. Mais la solution la plus simple pour générer une seule valeur aléatoire est d'utiliser le
RANDOM
variable directement dans Bash. Lorsque vous référencez cette variable intégrée, Bash génère un grand nombre aléatoire. Pour placer cela dans la plage de 200 à 999, vous devez d'abord mettre le nombre aléatoire dans la plage de 0 à 799, puis ajouter 200.Pour mettre un nombre aléatoire dans une plage spécifique commençant à 0, vous pouvez utiliser le modulo opération arithmétique. Modulo calcule le reste après avoir divisé deux nombres. Si j'ai commencé avec 801 et divisé par 800, le résultat est 1 avec un reste de 1 (le modulo est 1). Diviser 800 par 800 donne 1 avec un reste de 0 (le modulo est 0). Et diviser 799 par 800 donne 0 avec un reste de 799 (le modulo est 799).
Bash prend en charge l'expansion arithmétique avec le
$(( ))
construction. Entre les doubles parenthèses, Bash effectuera des opérations arithmétiques sur les valeurs que vous fournissez. Pour calculer le modulo de 801 divisé par 800, puis ajouter 200, vous taperez :$ echo $(( 801 % 800 + 200 ))
201Avec cette opération, vous pouvez calculer un nombre cible aléatoire entre 200 et 999 :
$ echo $(( RANDOM % 800 + 200 ))
673Vous vous demandez peut-être pourquoi j'ai utilisé
RANDOM
au lieu de$RANDOM
dans ma déclaration Bash. Dans l'expansion arithmétique, Bash développera automatiquement toutes les variables entre les doubles parenthèses. Vous n'avez pas besoin du$
sur le$RANDOM
variable pour référencer la valeur de la variable car Bash le fera pour vous.Jouer au jeu des nombres
Mettons tout cela ensemble pour jouer au jeu des nombres. Générez deux "grands" nombres aléatoires, quatre "petites" valeurs aléatoires et la valeur cible :
$ seq 15 5 100 | shouf | tête -2
75
100
$ seq 1 10 | shouf | head -4
4
3
10
2
$ echo $(( RANDOM % 800 + 200 ))
868Mes chiffres sont 75 , 100 , 4 , 3 , 10 , et 2 , et mon numéro cible est 868 .
Je peux me rapprocher du nombre cible si j'effectue ces opérations arithmétiques en utilisant chacun des "petits" et "grands" nombres pas plus d'une fois :
10×75 =750
750+100 =850
et :
4×3 =12
850+12 =862
862+2 =864Ce n'est qu'à quatre, pas mal ! Mais j'ai trouvé cette façon de calculer le nombre exact en utilisant chaque nombre aléatoire pas plus d'une fois :
4×2 =8
8×100 =800
et :
75-10+3 =68
800+68 =868Ou je pourrais effectuer ces calculs pour obtenir exactement le nombre cible. Cela utilise seulement cinq des six nombres aléatoires :
4×3 =12
75+12 =87
et :
87×10 =870
870-2 =868Donnez le compte à rebours essayez le jeu de nombres et faites-nous savoir si vous avez bien réussi dans les commentaires.