Like many individuals, I have been exploring a number of new TV reveals in the course of the pandemic. I not too long ago found a British sport present referred to as *Countdown*, the place contestants play two sorts of video games: a *phrases* sport, the place they attempt to make the longest phrase out of a jumble of letters, and a *numbers* sport, the place they calculate a goal quantity from a random number of numbers. Because I get pleasure from arithmetic, I’ve discovered myself drawn to the numbers sport.

The numbers sport generally is a enjoyable addition to your subsequent household sport night time, so I wished to share my very own variation of it. You begin with a group of random numbers, divided into “small” numbers from 1 to 10 and “large” numbers which can be 15, 20, 25, and so forth till 100. You decide any mixture of six numbers from each massive and small numbers.

Next, you generate a random “target” quantity between 200 and 999. Then use easy arithmetic operations together with your six numbers to attempt to calculate the goal quantity utilizing every “small” and “large” quantity not more than as soon as. You get the very best variety of factors for those who calculate the goal quantity precisely and fewer factors if you may get inside 10 of the goal quantity.

For instance, in case your random numbers have been 75, 100, 2, three, Four, and 1, and your goal quantity was 505, you may say *2+three=5*, *5×100=500*, *Four+1=5*, and *5+500=505*. Or extra immediately: (**2**+**three**)×**100** + **Four** + **1** = **505**.

## Randomize lists on the command line

I’ve discovered one of the simplest ways to play this sport at house is to tug 4 “small” numbers from a pool of 1 to 10 and two “large” numbers from multiples of 5 from 15 to 100. You can use the Linux command line to create these random numbers for you.

Let’s begin with the “small” numbers. I would like these to be within the vary of 1 to 10. You can generate a sequence of numbers utilizing the Linux `seq`

command. You can run `seq`

a couple of other ways, however the easiest type is to offer the beginning and ending numbers for the sequence. To generate an inventory from 1 to 10, you may run this command:

To randomize this listing, you need to use the Linux

`(“shuffle”) command.`

shuf`will randomize the order of no matter you give it, often a file. For instance, for those who ship the output of the`

shuf`command to the`

seq`command, you’ll obtain a randomized listing of numbers between 1 and 10:`

shuf$ seq 1 10 | shuf

three

6

eight

10

7

Four

5

2

1

9To choose simply 4 random numbers from an inventory of 1 to 10, you’ll be able to ship the output to the

`head`

command, which prints out the primary few traces of its enter. Use the`-Four`

choice to specify that`head`

ought to print solely the primary 4 traces:$ seq 1 10 | shuf | head -Four

6

1

eight

FourNote that this listing is totally different from the sooner instance as a result of

`shuf`

will generate a random order each time.Now you’ll be able to take the following step to generate the random listing of “large” numbers. The first step is to generate an inventory of attainable numbers beginning at 15, incrementing by 5, till you attain 100. You can generate this listing with the Linux

`seq`

command. To increment every quantity by 5, insert an alternative choice for the`seq`

command to point thestep:$ seq 15 5 100

15

20

25

30

35

40

45

50

55

60

65

70

75

80

85

90

95

100And simply as earlier than, you’ll be able to randomize this listing and choose two of the “large” numbers:

$ seq 15 5 100 | shuf | head -2

75

40## Generate a random quantity with Bash

I suppose you might use an identical methodology to pick out the sport’s goal quantity from the vary 200 to 999. But the best answer to generate a single random worth is to make use of the

`RANDOM`

variable immediately in Bash. When you reference this built-in variable, Bash generates a big random quantity. To put this within the vary of 200 to 999, you’ll want to put the random quantity into the vary zero to 799 first, then add 200.To put a random quantity into a selected vary beginning at zero, you need to use the

moduloarithmetic operation. Modulo calculates thethe restafter dividing two numbers. If I began with 801 and divided by 800, the result’s 1with a the rest of1 (the modulo is 1). Dividing 800 by 800 provides 1with a the rest ofzero (the modulo is zero). And dividing 799 by 800 ends in zerowith a the rest of799 (the modulo is 799).Bash helps arithmetic growth with the

`$(( ))`

assemble. Between the double parentheses, Bash will carry out arithmetic operations on the values you present. To calculate the modulo of 801 divided by 800, then add 200, you’ll sort:$ echo $(( 801 % 800 + 200 ))

201With that operation, you’ll be able to calculate a random goal quantity between 200 and 999:

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

673You may marvel why I used

`RANDOM`

as a substitute of`$RANDOM`

in my Bash assertion. In arithmetic growth, Bash will robotically develop any variables throughout the double parentheses. You do not want the`$`

on the`$RANDOM`

variable to reference the worth of the variable as a result of Bash will do it for you.## Playing the numbers sport

Let’s put all that collectively to play the numbers sport. Generate two random “large” numbers, 4 random “small” values, and the goal worth:

$ seq 15 5 100 | shuf | head -2

75

100

$ seq 1 10 | shuf | head -Four

Four

three

10

2

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

868My numbers are

75,100,Four,three,10, and2, and my goal quantity is868.I can get near the goal quantity if I do these arithmetic operations utilizing every of the “small” and “large” numbers not more than as soon as:

10×75 = 750

750+100 = 850and:

Four×three = 12

850+12 = 862

862+2 = 864That’s solely 4 away—not unhealthy! But I discovered this method to calculate the precise quantity utilizing every random quantity not more than as soon as:

Four×2 = eight

eight×100 = 800and:

75-10+three = 68

800+68 = 868Or I may carry out

thesecalculations to get the goal quantity precisely. This makes use of solely 5 of the six random numbers:Four×three = 12

75+12 = 87and:

87×10 = 870

870-2 = 868Give the

Countdownnumbers sport a strive, and tell us how effectively you probably did within the feedback.