java 的一个逻辑处理问题对一个

haaaaaaaaa 发布于 2021/12/07 15:29
阅读 416
收藏 0

对一个数组list 进行双随机拆分,分成n组,每组m个,如:10个元素 拆分成3组,每组2个 结果就是 2,2,6

😅总是无法随机拆分

加载中
0
sprouting
sprouting

双随机?工商业务?。。。你这算法没难度啊,不就是小学题目吗?总数 / 分组数 = 每组数量, 最后一个的时候,总数 - 已分配数量 = 最后一个的数量

haaaaaaaaa
haaaaaaaaa
每组数量不一定是均分,都是人为设置,多余的补到最后一个头上
0
ArchitectureMaster
ArchitectureMaster

这个很简单,只要题主了解了java 8 steam lambda里的skip + limit即可。

用时间种子或guid种子生成随机数范围则是1-数组长度。

1.random(seed).nextInt(1,array.length),每页size。

2.用数组长度除以上面生成的随机数再向上取整,得到按pageSize可以分多少组maxPage。

3.再用将maxPage for出一个数组从0到maxPage的数组。即如果maxPage为3,即0,1,2->然后使用skip(index*maxPage).limit(maxPage),循环三次即可折分出三个n长的数组。而m则是maxPage。

4.遍历这个数组,每次执行就可以分出一个数组。而最后一定会生成的三组每组的pageData就是2分折出的数组。

5.这个方法就是基于数据分页法,第一个随机出分页的每页数据大小。最后一个数组则有可能是不足

题主的思路有点问题,M和N虽然是随机但是有关系的。但如果完全随机这题的意义何在?因为前面如何m*n,最后一组的数据则是一个随机大小的数组,按双随机的思路m、n双随机,那麽m、n、数组长度三者会产生出m*n*length种情况。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部