The ranges aren't random. I think the default is to set up 255 equal-interval buckets (steps) between the min and max values.
This seems an odd choice, but it is a sensible default for common uses of this tool, for example land cover classifications.
I can't test this at the moment, but i would try the following:-
Use r.mapcalc with a formula like this, replacing 'mylayer' with your layer name. Use this to create a new raster.
int(mylayer/100)*100.0
that will mean range [0, 99.99] maps to 0.0, [100.0-199.9] to 100.0 and so on.
Run r.report like you did before. Set the number of buckets using the nsteps parameter. For example, if your lowest rounded elevation is 300 and maximum is 700, use 4 bands. Manual page
If using QGIS both of these should be available in Processing
Because your min and max values are now multiples of 100, you can use a fixed number of bands. All cells between 800.0 and 899.99 should go in the same band.
There is the r.reclassify method, see this answer for more info. That needs a text file set up, though, and I think it only works with integers. But it might be better if you want uneven sized ranges.