This sound good so far.
But what I was thinking is that you should give people the options to override the class using classLoader
Eg. random.replace(String randomName, Class<?> class);
or you can go even more simple by replacing the Class<?> class with RandomEventSolver