BigInteger bigInteger = new BigInteger("534534");
The range between 2 and bigInteger-2;
BigInteger bigInteger = new BigInteger("534534");
The range between 2 and bigInteger-2;
You can generate a random double in the closed range [x1,x2] like this [1]:
double f = Math.random()/Math.nextDown(1.0);
double x = x1*(1.0 - f) + x2*f;
Using BigDecimals with the range between 2 and bigInteger-2;:
double f = Math.random()/Math.nextDown(1.0);
BigDecimal.valueOf(2).multiply(BigDecimal.valueOf(1.0 - f)).add(new BigDecimal(bigInteger.subtract(BigInteger.valueOf(2))).multiply(BigDecimal.valueOf(f))).toBigInteger()