Php “均匀分布的算法”;奖品无差异彩票

Php “均匀分布的算法”;奖品无差异彩票,php,algorithm,graph,distribution,Php,Algorithm,Graph,Distribution,我的问题是:我想做一个“善意”的抽奖过程。如果可能,此算法将平均分配奖品。这可能会被视为对购买每张奖品门票的人不公平,因为他会更灵活地赢得不受欢迎的奖品,但没关系,我们可以说奖品大致相同。该算法将有助于消除方差,减少赢得奖品的掷骰次数。(是的,很无聊) 如果你能获奖,我将举办N比赛。这些人,M,可以每N购买一张票 举个例子,这里有奖品和买票的人: Prize1=[Pete,Kim, Jim] Prize2=[Jim, Kim] Prize3=[Roger, Kim] Prize4=[Jim]

我的问题是:我想做一个“善意”的抽奖过程。如果可能,此算法将平均分配奖品。这可能会被视为对购买每张奖品门票的人不公平,因为他会更灵活地赢得不受欢迎的奖品,但没关系,我们可以说奖品大致相同。该算法将有助于消除方差,减少赢得奖品的掷骰次数。(是的,很无聊)

如果你能获奖,我将举办
N
比赛。这些人,
M
,可以每
N
购买一张票

举个例子,这里有奖品和买票的人:

Prize1=[Pete,Kim, Jim]
Prize2=[Jim, Kim]
Prize3=[Roger, Kim]
Prize4=[Jim]
有4个奖品和4个独特的名字,所以应该可以平均分配

这个例子可能很容易解决,你应该在15秒内找到它,但是当
M
N
增加时,情况会变得更糟


我正在尝试做一个通用的算法,但很难。我需要一些好的提示,甚至更好的解决方案或链接到解决方案

您想要寻找一种工作分配算法,或者匈牙利算法,例如二部图中的加权完美匹配,或者可能是全对floyd-warshall算法。我的想法是,这可以表示为一个二部图。这不是一项容易解决的任务。

理论:你有一个问题。你必须找到一个合适的方法。图中存在完美匹配,如果:

  • |A |=| B|
  • 该图满足下列条件:

如果存在完美匹配,您可以运行查找。

您要查找的单词是“奖品”,而不是“价格”,正如您所知。让我有点困惑。那么你应该如何分配奖品呢?通过分配奖品,他们可以中奖,这样每个人都可以赢得x个奖品-其余的奖品必须通过随机抽奖来分配。谢谢你的帮助。我最终只是野蛮地强迫自己去解决问题。网络服务器速度很快,m和n没有那么大:)解决方案太差了,太不可思议了,我用随机数轰炸它,直到它符合我的标准,我想我有时间时会编写得更好:-)仅供参考:如果n>~30,你就不能用蛮力解决这个问题。谢谢,我同意你的看法,我想出了一个蛮力解决方案,很糟糕,哈哈。高效的CPU使我们变得愚蠢:D