Вы правы. Javadoc утверждает, что верхняя граница является исключительной. Это означает, что вы не можете использовать ints(lower, upper)
для получения потока, включающего Integer.MAX_VALUE
.
Обоснование
Это, возможно, крайний случай, который дизайнеры не рассматривали для начала с 1 , или который, по их мнению, не стоил «исправления», усложняющего API.
Обратите внимание, что Random.nextInt(bound)
имеет такую же проблему, поэтому этот недостаток в Random
присутствует с Java 1.2. Следовательно, другая возможность заключается в том, что разработчики знали об этом недостатке, когда добавляли методы ints(...)
и longs(...)
, но решили не устранять его, поскольку это приведет к неловкому несоответствию со старыми методами.
1 - Это маловероятно, ИМО. Команда Java была умными людьми. И из исходного кода ясно, что они хорошо знают об этом сейчас.
В любом случае ... если вам нужны потоки случайных чисел с диапазоном, включающим MAX_VALUE
с, вы можете использовать перегрузки без аргументов (ints()
и longs()
) и фильтровать потоки. Кроме того, вы можете накатывать свои собственные потоки.