Blue duck, red duck, gray duck So, last week I posted a challenge to play Duck, Duck, Goose. This lead to a number of Minnesotans commenting about their regional 'Gray duck' variation.

So here's the rules:

Using this list of colours:

Red
Orange
Yellow
Green
Blue
Indigo
Violet
Gray


Write a program to follow these rules:


Select one of these colours, and prepend it to the word 'duck' and print the result to a new line.
If the colour was not 'Gray', repeat step 1. 
If the colour was 'Gray', end your program.


Rules which must be followed:


The program should not consistently print the same number of lines.
It can begin on 'Gray duck', but should not do consistently.
There should be exactly one duck on each line and no empty lines are output.
There should be at least one space between a colour and a duck.
White space before and after the significant output does not matter.
The case of the output doesn't matter.
Colours can be repeated.
The output doesn't have to contain every colour every time, but it must be possible that your code will output every colour.
No colours outside the above array can be included.
Either grey or gray are acceptable in your answer.
Colours should not consistently be in the same order.
Aim for the shortest program. Smallest number of bytes wins.


Example output:

Green duck
Orange duck
Yellow duck
Indigo duck
Yellow duck 
Gray duck


Thanks to @Mike Hill for first alerting me to this variation.
LuaLaTeX, 220 211 characters
command:
lualatex -interaction nonstopmode

Not the shortest, but the fanciest. Based on @skillmon's solution

\RequirePackage{tikzducks}\newcount\b\let~\def~\0{red}~\1{orange}~\2{yellow}~\3{green}~\4{blue}~\5{cyan}~\6{violet}~\7{gray}\loop\b\uniformdeviate8\tikz\duck[body=\csname\the\b\endcsname]; \ifnum\b&lt;7\repeat\stop