I've also included the Java source code with the program, if anybody is interested in seeing it. Is a sneak peak at the user interface, for a visual explanation of what it does.
Randomizer Features: • Unevolved starters - You have the option to make randomized starters unevolved. • Limit wild pokemon randomization based on strength - this makes it so that every wild pokemon that is replaced has roughly the same strength as the pokemon that is replacing it.
This means that it will be very unlikely to find pokemon like Groudon in Route 101 and pokemon like Weedle in Cerulean Cave. • Limit wild pokemon randomization based on habitat - this causes the randomizer to replace wild pokemon with pokemon that have the same habitat. Selecting this option means that you won't find, say, wild Blaziken while fishing, or wild Horsea in the middle of a cave. • Limit Trainer pokemon randomization based on strength - this causes every trainer pokemon that is replaced to have roughly the same strength as the pokemon that is replacing it. It means that Youngster Joey won't end up with, say, a Ho-Oh, while Lance doesn't get pokemon like Rattata. • Trainers retain type specialties - choosing this option will cause type specialist trainers to only recieve pokemon that match their type specialty. For instance, Misty only gets Water pokemon, while Bug Catcher Holden only gets Bug pokemon.
• Rival retains pokemon - the rival's last pokemon will be kept constant throughout the game, except for when it evolves. • Rematch trainers retain their pokemon - trainers that can rematch will keep the pokemon they originally used. The program keeps track of the evolutions as well, and can add new pokemon to the trainer's party. • Trainer pokemon get randomized movesets - the reasonable randomizer program doesn't pick completely random moves; it cobbles together random movesets from the pokemon's naturally learned moves, TM moves, egg moves, and tutor moves. You also have the option to use advanced movesets, which are predefined movesets that are strategically coherent. I basically used Battle Factory movesets for the advanced movesets, as well as Smogon for legendary pokemon.