One thing that is wrong for sure is your call to random(). The min and max are inclusive, so the max should be 255, not 256.
You should look at the types being used as well. The function setColourRGB() takes unsigned int but analogWrite() expects an int. Your random values are ints being set by random(), which returns a long, which are passed to setColourRGB() which expects unsigned ints.
Since you never clear out the colour variable it's setting a new random value every time through loop(), which might explain the flickering.