java 算法请教
本帖最后由 ppgjx 于 2022-8-11 14:56 编辑我现在有个需求,就是给你一个额定的天数比如150天,再给你一个任务数量,比如50次,要求在120天内把50次消耗完,但要是随机时间的,如果这个次数大于天数就要考虑一天做两次,这两次在一天的时间里也是必须是随机时间的,如何处理这个随机时间呢?主要是 他要求是这个任务分配应该是看似是正常的,比如两三天做一次,不能是那种到了150天,把50次都分配到一天去了,很头疼这个问题 ,我目前做的是 150 / 50 求出平均每三天做一次,然后每次都是在1-3这个区间加天数,但是如果是次数大于天数我就不知道咋办了,还有这个时间如代码我只是再原有的时间加一天,没有办法做到在一天的时间内随机抽取一个时间做 , 而且我这个代码while (day >= ave )可能会导致次数做不完的问题
//天数
int day = 150;
//任务数量
int taskCount = 50;
//平均每次任务需要几天
int ave = day / taskCount;
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
//获取150天之前的时间
calendar.add(Calendar.DAY_OF_MONTH, -150);
//总天数要大于平均天数 否则可能会有负数的问题 还会导致最后一次任务时间超过今天的时间
while (day >= ave ){
//随机天数
int i = new Random().nextInt(ave) + 1;
//添加天数
calendar.add(Calendar.DAY_OF_MONTH, i);
//总天数减去
day = day- i;
//输出天数
System.out.println(DateUtil.date(calendar.getTime()));
} 天数》》时数》》秒数》》毫秒数……
总有一个可以满足大于次数 kiseyzed 发表于 2022-8-11 14:59
天数》》时数》》秒数》》毫秒数……
总有一个可以满足大于次数
这种应该发悬赏贴, 这种应该发悬赏贴
这种应该发悬赏贴 首先你得晓得每一个任务的完成时间是多久。知道了就解决了。 要是真随机么,那当然就有可能比如50次全随机到了一天,那是没办法的事,因为是真随机。
我觉得你这种情况可以这样:150天按照要做的次数平均分,假设要做的次数是300次,那么一天里肯定有两个时刻是做事的对吧(觉得分不出来就150乘上24小时再分,以此类推),然后让这两个时刻随机在一定范围内浮动即可。
这种应该发悬赏贴 感谢楼主分享
页:
[1]
2