Java 从给定范围生成随机BigDecimal值
我需要从给定的范围生成随机的BigDecimal值。如何在Java中实现它?我就是这样做的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
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