Como gerar um valor aleatório do BigInteger em Java?
Preciso gerar inteiros aleatórios arbitrariamente grandes no intervalo de 0 (inclusive) a n (exclusivo). Meu pensamento inicial era chamarnextDouble
e multiplique por n, mas quando n chegar a ser maior que 253, os resultados não seriam mais distribuídos uniformemente.
BigInteger
tem o seguinte construtor disponível:
public BigInteger(int numBits, Random rnd)
Constrói um BigInteger gerado aleatoriamente, distribuído uniformemente no intervalo de 0 a (2numBits - 1), inclusive.
Como isso pode ser usado para obter um valor aleatório no intervalo de 0 a n, onde n não é uma potência de 2?