Visual Basic for Applications, 110 102 bytes
Edit: saved eight more bytes by using split()
instead of array()
while rnd>.3:?split("Red,Orange,Yellow,Green,Blue,Indigo,Violet",",")(rnd*6)+" duck":wend:?"Gray duck"
Type in the immediate window.