从给定范围生成随机BigDecimal值

我需要从给定范围生成随机BigDecimal值。 怎么用Java做?

class BigDecRand { public static void main(String[] args) { String range = args[0]; BigDecimal max = new BigDecimal(range + ".0"); BigDecimal randFromDouble = new BigDecimal(Math.random()); BigDecimal actualRandomDec = randFromDouble.divide(max,BigDecimal.ROUND_DOWN); BigInteger actualRandom = actualRandomDec.toBigInteger(); } } 

我这样做

 public static BigDecimal generateRandomBigDecimalFromRange(BigDecimal min, BigDecimal max) { BigDecimal randomBigDecimal = min.add(new BigDecimal(Math.random()).multiply(max.subtract(min))); return randomBigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP); } 

以及我运行它的方式:

 BigDecimal random = Application.generateRandomBigDecimalFromRange( new BigDecimal(-1.21).setScale(2, BigDecimal.ROUND_HALF_UP), new BigDecimal(21.28).setScale(2, BigDecimal.ROUND_HALF_UP) ); 

如何在Java中生成随机BigInteger值?

来自http://www.ponder2.net/doc/ponder2/net/ponder2/objects/P2Number.html

 protected java.math.BigDecimal random() Answer a random number depending upon the value of the receiver: 0 => random long value n => random integer >=0 and < n nm => random double >= 0.0 and < 1.0 Returns: a random number