水区程序员多,有10张牌, 发给4个人, 分别发 1 2 3 4张, 怎么处理最快。

Percaholic-avatar

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张


再补充下

顺序是定好的, 就是要发下去。

最简单的做法就是 轮训分, 这样要循环牌的数量

如果弄通过算法, 提前把数据处理好, 这样只要循环 人的数量, 效率就高了
Belgian Demon-avatar

Belgian Demon

遍历牌的数组取余区分就行了,一个reduce的事

噫看错题目了,那reduce写个累加就好了
SONO-avatar

SONO

再怎么处理最后不都是循环一个一个发么[s:ac:咦]
Sammy🥷-avatar

Sammy🥷

10张分成4份,一人一份,还能怎么分?
Baron Von Wafflehausen-avatar

Baron Von Wafflehausen

先让10张牌乱序,再把1张给1,23给2..
这点数据量,1纳秒和2纳秒有啥区别
Infamous Spaceship Dealer-avatar

Infamous Spaceship Dealer

十张牌还搞什么效率……
Everyday Weeb-avatar

Everyday Weeb

[s:ac:愁]先给1随机发一张牌 把牌数组这张牌的节点去了 从剩下的九张里选两张给2 然后剩下的七张中选仨给3 剩下的全给4
MorrowEpp-avatar

MorrowEpp

看你什么语言,R语言之类的数据分析语言可以直接数组打乱以后x[1], x[2:3]这样
Skits-avatar

Skits

十张最快就是打表嘛,直接写呗,还要个锤子循环
Percaholic-avatar

Percaholic

[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]这是举例子啊, 实际可能有 几百万数据, 分给 几千个人
mani-avatar

mani

关键是推广到 n个数组的一般性上:

1. 第i个数组的长度
2.数组元素的通项式

这样针对任意n个求组,只需要n次“大操作” 。

更过分点只保留一般性通项式,连值都不算,随用随算好了。

你这个例子里 c[i,j] = i + (n-1)*j
Infamous Spaceship Dealer-avatar

Infamous Spaceship Dealer

10张牌里总共有10*9*8*7*6*5*4*3*2*1=3628800种排列方法。预先生成好。
随机选中一种排列,然后0给A,12给B,345给C,6789给D就行了
MagicMojo-avatar

MagicMojo

十张牌分四份,每份至少1张,把所有可能列出来建个索引,每次随机取一个索引值
Percaholic-avatar

Percaholic

[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次, 效率就高了
Percaholic-avatar

Percaholic

有没有大佬, 给个思路就行了
gid-avatar

gid

想n次分完就得用数学方法把1~n号得到的牌写个通项式吧。有没有数学大手子算一下
avioli-avatar

avioli

建目录?
rhyythm-avatar

rhyythm

[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:呆]
如果已知发送目标的话直接一次循环不比你还要排序更快?
Nooodle-avatar

Nooodle

我觉的需要描述一下具体场景,尤其是必须一张一张发的原因。如果类似扑克牌机那种,数据还是一次打包发过来,然后在客户端这边做成一张一张发的效果。
C9WaduHek-avatar

C9WaduHek

你10张牌最快的分法必然是10次,不想1次发1张给别人就先1张1张分好再发出去。