This is a random name generator that pairs adjectives with names (e.g. "angry_einstein").
In the unlikely chance the generator returns the pair "boring_wozniak", it discards it and generates another name.
In this particular case I think a goto fits the bill.
They have their use cases, and this code seems like a fine use of it. Goto is taught as one of those things you should never use but it still has a purpose. If you look at any C code goto still used. You just have to make sure not to overuse it.
goto generally becomes a problem when suddenly everything is short-circuiting everywhere and you can't see where control's getting passed off to.