从给定范围生成随机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