java生成指定范围、指定小数位数的随机数
程序员文章站
2022-05-18 18:41:57
...
最近在项目中碰到了这个问题,需要生成指定小数位数的一个随机数,java中貌似没有直接可以用的API,需要自及写一个方法去实现,先贴下代码,如下:
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
Test t = new Test();
for (int i = 0; i <= 100; i++) {
System.out.println(t.makeRandom(2f,1.5f,1));
}
}
/**
* 生成指定范围,指定小数位数的随机数
* @param max 最大值
* @param min 最小值
* @param scale 小数位数
* @return
*/
BigDecimal makeRandom(float max,float min,int scale){
BigDecimal cha = new BigDecimal(Math.random() * (max-min) + min);
return cha.setScale(scale,BigDecimal.ROUND_HALF_UP);//保留 scale 位小数,并四舍五入
}
}
运行结果如下:
Math.random()方法生成一个[0,1)的随机数,因此我们将等式拆分,可得出等式取值范围为:
[min + (二者差值)*0,min + (二者差值)*1)======》[min,max),
这里来看,貌似是取不到max的值的,但是经过四舍五入后,便可以取到.以上就是java生成指定小数位数随机数的代码。
上一篇: 【微人事项目笔记】6、使用面包屑改善首页
下一篇: Python 举例random