This method might be cleaner if it just took an algorithm, and the algorithm was initialised with the `dictionary` and `min_length`. The current interface only support dictionary-based algorithms with a minimum length. What if you wanted to support an algorithm to generate completely random passwords with an exact length?