An easy way, which you may consider cheating, is using a map viewer.
Without doing that, there are at least two ways:
- Listen for a mass of zombie or spider sounds underground. They love to make noise and you can hear them through walls, making them easy to find. There's a chance that you'll find an underground cave or a dungeon near them. Creepers do not make noise but there are no such creeper dungeons.
Some guesses:
Levels have relatively little pattern between components like caves and veins so dungeons might be completely randomly placed, even near the top of the levels:
I'd guess that deeper down you have a better chance, but without diving into the code there's no way to confirm this.
Out of interest:
If your goal is to generate a map with lots of dungeons then Minecraft Seeds provides random seeds that do exactly that. Here are three examples:
Note that an update to map generation could change what a seed produces.
A water block becomes a source block when there's at least 2 other source blocks next to it (not counting diagonally). You start with the very edge and place two water blocks like so. This will give you a 2×2 square of water sources.
__________
|Wo |
|oW |
| |
| |
| |
W = water source placed by you
o = water source generated by the water mechanics
Now, simply scoop up any source block (it will refill), and dump it diagonally from the outermost block.
__________
|Woo |
|oWo |
|ooW |
| |
| |
Repeat until you hit an edge. Which source block you take doesn't matter, they are all infinite (as in, will refill instantly) at this point.
__________
|Woooo |
|oWooo |
|ooWoo |
|oooWo |
|ooooW |
As you can see, to fill an n-long square, you need n bucket loads (actually, only 2, since after that, you can refill from the pool).
To fill the entire rectangle, dump a bucket every other row on one side. The very edge block always has to be filled.
__________
|Wooooooo|
|oWoooooo|
|ooWooooo|
|oooWoooo|
|ooooWWoW|
So to fill an n×m block rectangle, you need n + ceil((m - n) / 2)
water sources, with m being the longer side. Again, only 2 if you're talking resources, because after that, you're drawing from an infinite pool.
Here's a video of a guy using this technique on a square:
(Note that he always refills from the still source blocks for some reason, but as noted above, any source block will do.)
Best Answer
Since a big part of Minecraft is finding resources, the game won't make it too easy for you. You will have to go through the caves and search for it.
But to find water in particular, you can make your task a bit easier by turning subtitles on. Flowing water produces sound and if you have subtitles on, you not only see it clearly no matter how far away or quiet it is, but you also get an indicator if it's to the left or to the right of you.
As soon as you see the subtitle, you can dig into the direction it shows you.
The downside of this is that you can't find standing water that way, but those are mostly just single blocks, apart from very rare water pockets with multiple water sources. Both are only a small part of the water in the world, so they shouldn't make a big difference for your farm. If they do, you would just have to search more.