Как создать случайное значение BigInteger в Java?
Мне нужно генерировать произвольно большие случайные целые числа в диапазоне от 0 (включительно) до n (исключая). Моей первоначальной мыслью было позвонитьnextDouble
и умножить на n, но как только n станет больше 253результаты больше не будут равномерно распределены.
BigInteger
имеет следующий конструктор:
public BigInteger(int numBits, Random rnd)
Создает случайно сгенерированный BigInteger, равномерно распределенный в диапазоне от 0 до (2numBits - 1) включительно.
Как это можно использовать для получения случайного значения в диапазоне 0 - n, где n не является степенью 2?