Как работает рандом в java?
Обычно такие наблюдения вас обманывают, так что лучше себе и своим глазам не доверять, 
постройте гистограмму вывода,  и тогда если она будет очень сильно отличаться от равномерного распределения делайте выводы, но смею заверить при большом числе прогонов джавовский  Math.random() отличаться не будет. 
Хотя конечно Math.random плохой генератор случайных чисел, но не настолько как вы описали.
есть java.security.SecureRandom - наверное лучший вариант. Есть просто Random, есть ThreadLocalRandom - работает даже быстрее Random - может эти два работают лучше Math.random