The random number generation scheme in MATLAB is fairly sophisticated, having evolved greatly over the years. It is currently using the Mersenne Twister generator by default, which seems to be pretty good as I understand things. Older versions were somewhat more flawed, although uniformity over such a small span would not have been an issue even with the older methods that were in MATLAB when we started out.
You might enjoy reading some of the hits based on a Google search for the problems with old random number generators, say this one:
Can you have any pseudo-random number generator that is truly random? Well, not so easily. The best is arguably using things like random decays of particles.
Your problem is that you are choosing far too small of a sample. 10 iterations of 100 numbers is not at all large in context. Over that span, you will see only 1000 numbers in total.
What is the average number of samples at 19950 or above in that span? Here is where you have a serious problem with your methodology. There are 51 integers that are at 19950 or above. (I'm going to assume that 19950+ includes 19950. But the difference is hardly relevant to what I've said below.)
So on average, I would expect to see 2.55 such events in that span of samples. But that is a relatively small number. It could easily be as small as 0. Or it could also easily by 5. For example, what is the probability that you would get 0 such events in a span of 1000 uniformly random samples?
(1 - 51/20000)^1000
So even from a TRULY, PURELY random stream, almost 8% of the time, I would expect to see no such event happen at all.
With a little thought, you should see that in fact this is just a binomial distribution. If you have the stats toolbox, we can compute that probability very easily using binocdf or binopdf.
Over a sample time of 1000 total samples, the expected fraction of hits in that interval will look like this:
0 1 2 3 4 5
0.077828 0.19897 0.25408 0.21609 0.13769 0.070121
0.077828 0.2768 0.53087 0.74696 0.88465 0.95477
But as you see, it is not at all unlikely that you will see no events at all. and as many as 5 or even 6 is also entirely possible. Again, you are choosing far too small of a sample size to have any real statistical significance. And blocks of 100 such samples? PPPPPPLEASE. Get serious. In any given stream of 100 random samples...
0 1 2 3
0.77466 0.19804 0.025062 0.002093
So in any such small sample, most of the time you will see 0 such events, and 1 event around 20% of the time.
In order to ask questions about any decent random number generator, you want to look at much more massively large samples than this. It is far too easy to delude yourself by making any conclusions from small sample sizes. Carried to an extreme, suppose you looked at a random coin flip?
Flip a truly random coin twice, and fully 50% of the time, I will get the same result both times. How can that be random?