What you're doing there with the random won't work with biomes. Biomes generate differently based on local climate - which on earth is determined by the physical location on the planet surface.
Even Perlin noise or other 'organized random' functions won't give you a biomes effect you are looking for. They only generate localized groupings. It's still random with no perceived overall pattern.
I haven't yet put anything to code because that would depend on the engine. I think what we need to do is program a 'framework' of sorts. This pattern would model a typical planet and allow us to designate a certain set of parameters for: north, south, mountain, desert etc... Those parameters could then be combined with Perlin noise to get a more natural feel.
So an overview of this might be:
- Create the planet surface
- Break up the surface into segments with a specific pattern
- Assign each segment a set of parameters
- Feed those parameters into a noise function