For an even chance of spawning all monsters within the specified level range, I would use a second array. The first array would contain all monsters, the second array would be generated to contain monsters eligible to spawn.
You would use a for each x, and check the level at curx,1 to see if it qualifies, then push it to three second array if it does. After all qualified entries have been added to the second array, you can use floor (random (array2.Width)) to pick a random index from the second array.
For a brute force method, you can pick a random index from your main array, check of the level is within your criteria, and repick if it is not. But this method can be inefficient.