用法:
HashMap<Integer, ArrayList<Integer>> hm = getRadomeInDay(1000 , 100);
System.out.println(hm.toString());
原码
/total:总和
/count:要分成几个整数
public HashMap<Integer, ArrayList<Integer>> getRadomeInDay(int total , int count){
HashMap<Integer, ArrayList<Integer>> hm = new HashMap<Integer, ArrayList<Integer>>();
for(int i = 0 ; i<24 ; i++){
hm.put(i, new ArrayList<Integer>()); //24小时的数字分布,key为小时数,value为分布的整数list
}
int base = total/count;//随机数的基数
int yushu = total - base*count;//保证总和为total的余数
for(int i = 0 ; i<(count-1)/2 ; i ++){
int radomeInt = (int) (Math.random()*base);
int hourInDay1 = (int) (Math.random()*24);
int hourInDay2 = (int) (Math.random()*24);
if(hourInDay1<=6 || hourInDay1>=18 ){//白天数据多一些/1到6点,18点到23点为晚上。如果为晚上,则重新随机一个数字
hourInDay1 = (int) (Math.random()*24);
}
if(hourInDay2<=6 || hourInDay2>=18 ){//白天数据多一些/1到6点,18点到23点为晚上。如果为晚上,则重新随机一个数字
hourInDay2 = (int) (Math.random()*24);
}
hm.get(hourInDay1).add(base + radomeInt);
hm.get(hourInDay2).add(base - radomeInt);
}
//////////////////////////下面这一行要调整一下,最终分出来的整数个数会与count不一样
hm.get((int) (Math.random()*24)).add(yushu);
return hm;
}