Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从给定范围生成随机BigDecimal值_Java_Bigdecimal - Fatal编程技术网

Java 从给定范围生成随机BigDecimal值

Java 从给定范围生成随机BigDecimal值,java,bigdecimal,Java,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(Ma

我需要从给定的范围生成随机的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)
);

可能重复,但如何从范围[-0.45,0.6]生成值?好的,您可以使用该代码查找该范围的随机数,然后将最小值添加到其中
R=min+rand(range)
其中
range=max-min
这里有一个exmaple:
public类BigDecimalGenerator{public static void main(String[]args){BigDecimal max=new BigDecimal(“0.44”);BigDecimal min=new BigDecimal(-0.44”);BigDecimal range=max.subtract(min);BigDecimal result=min.add(range.multiply(new BigDecimal(Math.random());System.out.println(result);}}
我应该注意到,它的动态性受到限制。随机性受到
double
s精度1到0之间的限制。希望这足够随机:)例如,当
BigDecimal max=new BigDecimal(“1000000000000000000000000”)时;  BigDecimal最小值=新的BigDecimal(“-1000000000000000000000000”)您的结果如下所示:
88392126894971667638856160920113.3251190185546875000000000000000000000000000000000