If you take the time to understand the problem first -- run test cases to narrow down the precise conditions under which the bug occurs, read the code, step through the code with the debugger, etc. -- you'll spend less time trying and rejecting random solutions because you'll already have a good idea of what you need to do to fix the bug.
Another advantage of getting a good understanding of the code and the bug before fixing it is that it makes it much more likely that you'll actually fix the bug, and not some limited subset of it.
Similar to how what people truly want to do is often written LAST in their list. After subconscious pressure is gone.