关于这篇文章简单做个介绍,在网上大部分都是 整数之间的随机数,然而对我来说根本没有用。
由于公司需求做发送红包的随机数,并且包含最大和最小金额。关于钱来说是有小数的。所以就面临对小数取随机数。
目前来说有两种方式,一个就是把单位元转换为分,就成了整数之间的取整,这个就不说了。
还有就是之间在两个小数点之间的书取整。之间上代码
public static void main(String[] args) {
BigDecimal minPice = new BigDecimal("11.1100").setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal maxPice = new BigDecimal("11.2255").setScale(2,BigDecimal.ROUND_DOWN);
List<BigDecimal> list = new ArrayList<BigDecimal>();
for (int i = 0; i < 10000; i++) {
BigDecimal random = new BigDecimal(Math.random());
//这个就是取出的随机数。其他只是为了测试概率是否一样。最后结果保留两位小数,这只是为了测试最大值和最小值
BigDecimal randomPice = minPice.add(
random.multiply(maxPice.subtract(minPice)));
list.add(randomPice);
}
Collections.sort(list);
Map<BigDecimal,Integer> map = new TreeMap<BigDecimal,Integer>();
for (BigDecimal in