Как создать случайное значение BigInteger в Java?

Мне нужно генерировать произвольно большие случайные целые числа в диапазоне от 0 (включительно) до n (исключая). Моей первоначальной мыслью было позвонитьnextDouble и умножить на n, но как только n станет больше 253результаты больше не будут равномерно распределены.

BigInteger имеет следующий конструктор:

public BigInteger(int numBits, Random rnd)

Создает случайно сгенерированный BigInteger, равномерно распределенный в диапазоне от 0 до (2numBits - 1) включительно.

Как это можно использовать для получения случайного значения в диапазоне 0 - n, где n не является степенью 2?

Ответы на вопрос(7)

Ваш ответ на вопрос