Percaholic
2020-04-18T02:19:46+00:00
例如 这样
1号:1
2号:2 5
3号:3 6 8
4号:4 7 9 10
怎么处理可以 4次就发完,不要循环1个个的发
我开始的想法是 取余数, 然后用算法 把牌标记好, 再发下去。
实际数据量, 上千万 分给 几千人吧
和发牌一样, 要一个个来, 不能 第一个直接给4张
再补充下
顺序是定好的, 就是要发下去。
最简单的做法就是 轮训分, 这样要循环牌的数量
如果弄通过算法, 提前把数据处理好, 这样只要循环 人的数量, 效率就高了
遍历牌的数组取余区分就行了,一个reduce的事
噫看错题目了,那reduce写个累加就好了
再怎么处理最后不都是循环一个一个发么[s:ac:咦]
先让10张牌乱序,再把1张给1,23给2..
这点数据量,1纳秒和2纳秒有啥区别
[s:ac:愁]先给1随机发一张牌 把牌数组这张牌的节点去了 从剩下的九张里选两张给2 然后剩下的七张中选仨给3 剩下的全给4
看你什么语言,R语言之类的数据分析语言可以直接数组打乱以后x[1], x[2:3]这样
[quote][pid=416643947,21473358,1]Reply[/pid] Post by [uid=231579]ipxipx[/uid] (2020-04-26 10:23):
先让10张牌乱序,再把1张给1,23给2..
这点数据量,1纳秒和2纳秒有啥区别[/quote]这是举例子啊, 实际可能有 几百万数据, 分给 几千个人
关键是推广到 n个数组的一般性上:
1. 第i个数组的长度
2.数组元素的通项式
这样针对任意n个求组,只需要n次“大操作” 。
更过分点只保留一般性通项式,连值都不算,随用随算好了。
你这个例子里 c[i,j] = i + (n-1)*j
十张牌分四份,每份至少1张,把所有可能列出来建个索引,每次随机取一个索引值
[quote][pid=416647431,21473358,1]Reply[/pid] Post by [uid=15907824]安东尼达爷[/uid] (2020-04-26 10:34):
10张牌里总共有10*9*8*7*6*5*4*3*2*1=3628800种排列方法。预先生成好。
随机选中一种排列,然后0给A,12给B,345给C,6789给D就行了[/quote]顺序是定好的, 就是要发下去。
最简单的做法就是 轮训分, 这样要循环10次
如果弄通过算法, 提前把数据处理好, 这样只要分4次, 效率就高了
想n次分完就得用数学方法把1~n号得到的牌写个通项式吧。有没有数学大手子算一下
[quote][pid=416648687,21473358,1]Reply[/pid] Post by [uid=8426276]come_on_1002[/uid] (2020-04-26 10:38):
顺序是定好的, 就是要发下去。
最简单的做法就是 轮训分, 这样要循环10次
如果弄通过算法, 提前把数据处理好, 这样只要分4次, 效率就高了[/quote]不是 你提前处理数据也是效率的一部分啊[s:ac:呆]
如果已知发送目标的话直接一次循环不比你还要排序更快?
我觉的需要描述一下具体场景,尤其是必须一张一张发的原因。如果类似扑克牌机那种,数据还是一次打包发过来,然后在客户端这边做成一张一张发的效果。
你10张牌最快的分法必然是10次,不想1次发1张给别人就先1张1张分好再发出去。