溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Linux命令玩一個有趣的數學游戲

發布時間:2021-09-27 16:30:55 來源:億速云 閱讀:167 作者:柒染 欄目:系統運維

如何用Linux命令玩一個有趣的數學游戲,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

在家玩流行的英國游戲節目 “Countdown” 中的數字游戲。

像許多人一樣,我在大流行期間看了不少新的電視節目。我最近發現了一個英國的游戲節目,叫做 Countdown,參賽者在其中玩兩種游戲:一種是 單詞 游戲,他們試圖從雜亂的字母中找出最長的單詞;另一種是 數字 游戲,他們從隨機選擇的數字中計算出一個目標數字。因為我喜歡數學,我發現自己被數字游戲所吸引。

數字游戲可以為你的下一個家庭游戲之夜增添樂趣,所以我想分享我自己的一個游戲變體。你以一組隨機數字開始,分為 1 到 10 的“小”數字和 15、20、25,以此類推,直到 100 的“大”數字。你從大數字和小數字中挑選六個數字的任何組合。

接下來,你生成一個 200 到 999  之間的隨機“目標”數字。然后用你的六個數字進行簡單的算術運算,嘗試用每個“小”和“大”數字計算出目標數字,但使用不能超過一次。如果你能準確地計算出目標數字,你就能得到最高分,如果距離目標數字  10 以內就得到較低的分數。

例如,如果你的隨機數是 75、100、2、3、4 和 1,而你的目標數是 505,你可以說 2+3=5,5×100=500,4+1=5,以及 5+500=505?;蛘吒苯拥兀?code>(2+3)×100 + 4 + 1 = 505。

在命令行中隨機化列表

我發現在家里玩這個游戲的最好方法是從 1 到 10 的池子里抽出四個“小”數字,從 15 到 100 的 5 的倍數中抽出兩個“大”數字。你可以使用 Linux 命令行來為你創建這些隨機數。

讓我們從“小”數字開始。我希望這些數字在 1 到 10 的范圍內。你可以使用 Linux 的 seq 命令生成一個數字序列。你可以用幾種不同的方式運行 seq,但最簡單的形式是提供序列的起始和結束數字。要生成一個從 1 到 10 的列表,你可以運行這個命令:

$ seq 1 1012345678910

為了隨機化這個列表,你可以使用 Linux 的 shuf(“shuffle”,打亂)命令。shuf 將隨機化你給它的東西的順序,通常是一個文件。例如,如果你把 seq 命令的輸出發送到 shuf 命令,你會收到一個 1 到 10 之間的隨機數字列表:

$ seq 1 10 | shuf36810745219

要從 1 到 10 的列表中只選擇四個隨機數,你可以將輸出發送到 head 命令,它將打印出輸入的前幾行。使用 -4 選項來指定 head 只打印前四行:

$ seq 1 10 | shuf | head -46184

注意,這個列表與前面的例子不同,因為 shuf 每次都會生成一個隨機順序。

現在你可以采取下一步措施來生成“大”數字的隨機列表。第一步是生成一個可能的數字列表,從 15 開始,以 5 為單位遞增,直到達到 100。你可以用 Linux 的 seq 命令生成這個列表。為了使每個數字以 5 為單位遞增,在 seq 命令中插入另一個選項來表示 步進

$ seq 15 5 1001520253035404550556065707580859095100

就像以前一樣,你可以隨機化這個列表,選擇兩個“大”數字:

$ seq 15 5 100 | shuf | head -27540

用 Bash 生成一個隨機數

我想你可以用類似的方法從 200 到 999 的范圍內選擇游戲的目標數字。但是生成單個隨機數的最簡單的方案是直接在 Bash 中使用 RANDOM 變量。當你引用這個內置變量時,Bash 會生成一個大的隨機數。要把它放到 200 到 999 的范圍內,你需要先把隨機數放到 0 到 799 的范圍內,然后加上 200。

要把隨機數放到從 0 開始的特定范圍內,你可以使用模數算術運算符。模數計算的是兩個數字相除后的 余數。如果我用 801 除以 800,結果是 1,余數是 1(模數是 1)。800 除以 800 的結果是 1,余數是 0(模數是 0)。而用 799 除以 800 的結果是 0,余數是 799(模數是 799)。

Bash 通過 $(()) 結構支持算術展開。在雙括號之間,Bash 將對你提供的數值進行算術運算。要計算 801 除以 800 的模數,然后加上 200,你可以輸入:

$ echo $(( 801 % 800 + 200 ))201

通過這個操作,你可以計算出一個 200 到 999 之間的隨機目標數:

$ echo $(( RANDOM % 800 + 200 ))673

你可能想知道為什么我在 Bash 語句中使用 RANDOM 而不是 $RANDOM。在算術擴展中, Bash 會自動擴展雙括號內的任何變量. 你不需要在 $RANDOM 變量上的 $ 來引用該變量的值, 因為 Bash 會幫你做這件事。

玩數字游戲

讓我們把所有這些放在一起,玩玩數字游戲。產生兩個隨機的“大”數字, 四個隨機的“小”數值,以及目標值:

$ seq 15 5 100 | shuf | head -275100$ seq 1 10 | shuf | head -443102$ echo $(( RANDOM % 800 + 200 ))868

我的數字是 75、100、4、3、10 和 2,而我的目標數字是 868。

如果我用每個“小”和“大”數字做這些算術運算,并不超過一次,我就能接近目標數字了:

10×75 = 750750+100 = 850 然后: 4×3 = 12850+12 = 862862+2 = 864

只相差 4 了,不錯!但我發現這樣可以用每個隨機數不超過一次來計算出準確的數字:

4×2 = 88×100 = 800 然后: 75-10+3 = 68800+68 = 868

或者我可以做 這些 計算來準確地得到目標數字。這只用了六個隨機數中的五個:

4×3 = 1275+12 = 87 然后: 87×10 = 870870-2 = 868

試一試 Countdown 數字游戲。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女