Генерация случайного значения BigDecimal из заданного диапазона - PullRequest
6 голосов
/ 17 февраля 2011

Мне нужно сгенерировать случайное значение BigDecimal из заданного диапазона.Как это сделать на Java?

Ответы [ 3 ]

5 голосов
/ 17 февраля 2011
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();
    }
}
3 голосов
/ 17 мая 2014

Я делаю это таким образом

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)
);
0 голосов
/ 17 февраля 2011

Как создать случайное значение BigInteger в Java?

С 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
n.m => random double >= 0.0 and < 1.0
Returns:
a random number
...