Wie viele Menschen habe ich während der Pandemie viele neue Fernsehsendungen erkundet. Ich habe kürzlich eine britische Spielshow namens Countdown entdeckt , wo die Teilnehmer zwei Arten von Spielen spielen:ein Wörter Spiel, bei dem sie versuchen, aus einem Durcheinander von Buchstaben und Zahlen das längste Wort zu machen Spiel, bei dem sie aus einer zufälligen Auswahl von Zahlen eine Zielzahl berechnen. Weil ich Mathematik mag, habe ich mich zum Zahlenspiel hingezogen gefühlt.
Das Zahlenspiel kann eine lustige Ergänzung für Ihren nächsten Spieleabend mit der Familie sein, deshalb wollte ich meine eigene Variante davon teilen. Sie beginnen mit einer Sammlung von Zufallszahlen, die in "kleine" Zahlen von 1 bis 10 und "große" Zahlen von 15, 20, 25 usw. bis 100 unterteilt sind. Sie wählen eine beliebige Kombination aus sechs Zahlen aus großen und kleinen Zahlen Nummern.
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Als nächstes generierst du eine zufällige „Zielzahl“ zwischen 200 und 999. Versuche dann mit einfachen Rechenoperationen mit deinen sechs Zahlen, die Zielzahl zu berechnen, indem du jede „kleine“ und „große“ Zahl nicht mehr als einmal verwendest. Sie erhalten die höchste Punktzahl, wenn Sie die Zielzahl genau berechnen, und weniger Punkte, wenn Sie innerhalb von 10 der Zielzahl kommen.
Wenn Ihre Zufallszahlen beispielsweise 75, 100, 2, 3, 4 und 1 waren und Ihre Zielzahl 505 war, könnten Sie sagen:2+3=5 , 5×100=500 , 4+1=5 und 5+500=505 . Oder direkter:(2 +3 ) × 100 + 4 + 1 =505 .
Randomisieren Sie Listen auf der Befehlszeile
Ich habe festgestellt, dass der beste Weg, dieses Spiel zu Hause zu spielen, darin besteht, vier "kleine" Zahlen aus einem Pool von 1 bis 10 und zwei "große" Zahlen aus einem Vielfachen von fünf von 15 bis 100 zu ziehen. Sie können die Linux-Befehlszeile verwenden um diese Zufallszahlen für Sie zu erstellen.
Beginnen wir mit den "kleinen" Zahlen. Ich möchte, dass diese im Bereich von 1 bis 10 liegen. Sie können eine Zahlenfolge mit dem Linux seq
generieren Befehl. Sie können seq
ausführen ein paar verschiedene Möglichkeiten, aber die einfachste Form besteht darin, die Anfangs- und Endnummer für die Sequenz anzugeben. Um eine Liste von 1 bis 10 zu generieren, können Sie diesen Befehl ausführen:
$ seq 1 10
1
2
3
4
5
6
7
8
9
10
Um diese Liste zu randomisieren, können Sie den Linux-Befehl shuf
("shuffle")-Befehl. shuf
wird die Reihenfolge dessen, was Sie ihm geben, zufällig anordnen, normalerweise eine Datei. Wenn Sie beispielsweise die Ausgabe von seq
Befehl zum shuf
Befehl erhalten Sie eine randomisierte Liste von Zahlen zwischen 1 und 10:
$ seq 1 10 | shuf
3
6
8
10
7
4
5
2
1
9
Um nur vier Zufallszahlen aus einer Liste von 1 bis 10 auszuwählen, können Sie die Ausgabe an head
senden Befehl, der die ersten paar Zeilen seiner Eingabe ausgibt. Verwenden Sie die -4
Option, um diesen head
anzugeben sollte nur die ersten vier Zeilen drucken:
$ seq 1 10 | schuf | Kopf -4
6
1
8
4
Beachten Sie, dass sich diese Liste vom vorherigen Beispiel unterscheidet, weil shuf
generiert jedes Mal eine zufällige Reihenfolge.
Jetzt können Sie den nächsten Schritt machen, um die Zufallsliste der "großen" Zahlen zu generieren. Der erste Schritt besteht darin, eine Liste möglicher Zahlen zu erstellen, die bei 15 beginnen und um fünf erhöht werden, bis Sie 100 erreichen. Sie können diese Liste mit dem Linux seq
erstellen Befehl. Um jede Zahl um fünf zu erhöhen, fügen Sie eine weitere Option für seq
ein Befehl, um den Schritt anzugeben :
$ seq 15 5 100
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100Und genau wie zuvor können Sie diese Liste randomisieren und zwei der "großen" Zahlen auswählen:
$ seq 15 5 100 | schuf | Kopf -2
75
40Erzeuge eine Zufallszahl mit Bash
Ich nehme an, Sie könnten eine ähnliche Methode verwenden, um die Zielzahl des Spiels aus dem Bereich von 200 bis 999 auszuwählen. Aber die einfachste Lösung, um einen einzelnen Zufallswert zu generieren, ist die Verwendung des
RANDOM
Variable direkt in Bash. Wenn Sie auf diese integrierte Variable verweisen, generiert Bash eine große Zufallszahl. Um dies in den Bereich von 200 bis 999 zu bringen, müssen Sie die Zufallszahl zuerst in den Bereich von 0 bis 799 setzen und dann 200 hinzufügen.Um eine Zufallszahl in einen bestimmten Bereich beginnend bei 0 einzufügen, können Sie das Modulo verwenden Arithmetische Operation. Modulo berechnet den Rest nach der Division zweier Zahlen. Wenn ich mit 801 angefangen und durch 800 geteilt habe, ist das Ergebnis 1 mit einem Rest von 1 (das Modulo ist 1). Das Teilen von 800 durch 800 ergibt 1 mit einem Rest von 0 (das Modulo ist 0). Und die Division von 799 durch 800 ergibt 0 mit einem Rest von 799 (das Modulo ist 799).
Bash unterstützt die arithmetische Erweiterung mit
$(( ))
bauen. Zwischen den doppelten Klammern führt Bash arithmetische Operationen mit den von Ihnen angegebenen Werten durch. Um das Modulo von 801 dividiert durch 800 zu berechnen und dann 200 zu addieren, würden Sie Folgendes eingeben:$ echo $(( 801 % 800 + 200 ))
201Mit dieser Operation können Sie eine zufällige Zielzahl zwischen 200 und 999 berechnen:
$ echo $(( RANDOM % 800 + 200 ))
673Sie fragen sich vielleicht, warum ich
RANDOM
verwendet habe statt$RANDOM
in meiner Bash-Anweisung. Bei der arithmetischen Erweiterung erweitert Bash automatisch alle Variablen innerhalb der doppelten Klammern. Sie brauchen das$
nicht auf$RANDOM
Variable, um auf den Wert der Variablen zu verweisen, da Bash dies für Sie erledigt.Das Zahlenspiel spielen
Lassen Sie uns all das zusammenfügen, um das Zahlenspiel zu spielen. Generieren Sie zwei zufällige "große" Zahlen, vier zufällige "kleine" Werte und den Zielwert:
$ seq 15 5 100 | schuf | Kopf -2
75
100
$ seq 1 10 | schuf | Kopf -4
4
3
10
2
$ echo $(( RANDOM % 800 + 200 ))
868Meine Zahlen sind 75 , 100 , 4 , 3 , 10 und 2 , und meine Zielnummer ist 868 .
Ich komme der Zielzahl nahe, wenn ich diese Rechenoperationen mit jeder der "kleinen" und "großen" Zahlen nur einmal durchführe:
10×75 =750
750+100 =850
und:
4×3 =12
850+12 =862
862+2 =864Das sind nur noch vier – nicht schlecht! Aber ich habe diesen Weg gefunden, um die genaue Zahl mit jeder Zufallszahl nicht mehr als einmal zu berechnen:
4×2 =8
8×100 =800
und:
75-10+3 =68
800+68 =868Oder ich könnte diese ausführen Berechnungen, um die Zielzahl genau zu erhalten. Dabei werden nur fünf der sechs Zufallszahlen verwendet:
4×3 =12
75+12 =87
und:
87×10 =870
870-2 =868Geben Sie den Countdown ein Probieren Sie das Zahlenspiel aus und lassen Sie uns in den Kommentaren wissen, wie gut Sie abgeschnitten haben.