2 -3 bytes and updated explanation

# Brachylog, 2424 21 bytes

-3 bytes thanks to Erik the Outgolfer

↰₁∧"goose"w
"duck"ẉ4ṙ0∨↰"duck"ẉ4ṙ0∧"goose"w∨↰


In celebration of the Language of the month, my first brachylog post. The control flow in this language is cool.

Predicate 0How it works:

↰₁∧"goose"w"duck"ẉ4ṙ0∧"goose"w∨↰
↰₁"duck"ẉ           Call predicate 1    print duck with a new line
∧     4ṙ     and
"goose"w  print goose without   choose a newline


Predicate 1:

"duck"ẉ4ṙ0∨↰random number in the range is [0, 4]
"duck"ẉ      Print duck with a0 newline then            verify it equals zero
4ṙ   ∧  a random number in the range [0,4]     and (short circuits)
0  "goose"w is equal to zero print goose without a newline
∨    or (if it did not equal zero)
↰   repeat thisthe predicateprocedure


# Brachylog, 24 bytes

↰₁∧"goose"w
"duck"ẉ4ṙ0∨↰


Try it online!

In celebration of the Language of the month, my first brachylog post. The control flow in this language is cool.

Predicate 0:

↰₁∧"goose"w
↰₁           Call predicate 1
∧          and
"goose"w  print goose without a newline


Predicate 1:

"duck"ẉ4ṙ0∨↰
"duck"ẉ      Print duck with a newline then
4ṙ    a random number in the range [0,4]
0   is equal to zero
∨  or
↰ repeat this predicate


# Brachylog, 24 21 bytes

-3 bytes thanks to Erik the Outgolfer

"duck"ẉ4ṙ0∧"goose"w∨↰


Try it online!

In celebration of the Language of the month, my first brachylog post. The control flow in this language is cool.

How it works:

"duck"ẉ4ṙ0∧"goose"w∨↰
"duck"ẉ                 print duck with a new line
4ṙ               choose a random number in the range is [0, 4]
0              verify it equals zero
∧             and (short circuits)
"goose"w     print goose without a newline
∨    or (if it did not equal zero)
↰   repeat the procedure

1

# Brachylog, 24 bytes

↰₁∧"goose"w
"duck"ẉ4ṙ0∨↰


Try it online!

In celebration of the Language of the month, my first brachylog post. The control flow in this language is cool.

Predicate 0:

↰₁∧"goose"w
↰₁           Call predicate 1
∧          and
"goose"w  print goose without a newline


Predicate 1:

"duck"ẉ4ṙ0∨↰
"duck"ẉ      Print duck with a newline then
4ṙ    a random number in the range [0,4]
0   is equal to zero
∨  or
↰ repeat this predicate