1

我是那种乐于坐下来在很长一段时间内通过反复试验来尝试解决问题的人。然而,我完全陷入困境,并认为也许有人可以为我指出正确的方向。

我正在尝试创建一个脚本,允许为 1-6 名玩家分配多个对象,每个对象都有一个特定的点值。

该脚本需要平均每个玩家获得的点数。

它需要能够添加一组新的对象,然后它将根据已经获得的累积点数进行分配,并尝试分配它们以保持总数尽可能相等。

[TL;DR 位]

假设有 6 个玩家。

在第一轮中,“赢”了 6 个盒子:两个大盒子 @“1000pts”,两个中盒子 @“500pts”,两个小盒子 @“250pts”。

脚本显然必须将盒子奖励给每个玩家。

p1 1000 p2 1000 p3 500 p4 500 p5 250 p6 250

假设在第二轮中赢得了相同数量的盒子。该脚本将不得不计算谁得到什么以使分数尽可能接近。

p1 250 p2 250 p3 500 p4 500 p5 1000 p6 1000 

将给出总数

p1 1250 ps 1250 p3 1000 p4 1000 p5 1250 p6 1250

以此类推数轮。

基本上,它需要确定每一轮如何奖励积分,同时尽可能接近每个玩家的总积分。

任何帮助都将不胜感激,因为这个概念让我在试图找出最佳方法时头疼,更不用说实际代码本身了!

4

3 回答 3

0

如果您必须始终随机分配这些框,那么您可以为每个人分配一个概率,类似于选秀彩票(如果您是体育迷)。该概率用于查看谁获得下一个最高价值的奖品。

例如:

Let W(i) be the current wealth for person i

Let T=W(1) + W(i) + ... + W(n)

Let P(i) = W(i) / T

然后每个P(i)i将获得下一个最低奖金的概率。如果全部加起来P(i),则等于 1,因此将它们分布在区间上(0-1)。然后使用随机数生成器获取 和 之间的0数字1。它落入谁的区间(很可能是拥有最多财富的人),那么那个人获得的奖金最低。

重新计算TP()与剩余的人一起确定下一个较低奖品的概率,直到所有奖品都被授予。

您可以使用不同的权重来迫使它们靠近。

于 2013-07-31T18:15:43.547 回答
0

我认为有一个非常简单的解决方案可以用伪伪代码解决您的问题:

1个你想要的“盒子”的第一个分配,也许是随机的

2 名玩家,取决于获得的总价值

3 从得分最高的玩家开始,从最低值到最高值分配新的“盒子”。

4 转到 2

使用您的约定,这将结束于:

1° 圆形 ------------------- p1 1000 p2 1000 p3 500 p4 500 p5 250 p6 250

2° 圆形 -------------------- p1 1250 p2 1250 pr 1000 p4 1000 p5 1250 p6 1250

新玩家顺序变为:p1 1250 p2 1250 p5 p1250 p6 1250 p3 1000 p4 1000

因此,应用算法 agian: p1 1500 p2 1500 p5 1750 p6 1750 p3 2000 p4 2000

3°回合新玩家顺序变为:p3 2000 p4 2000 p5 1750 p6 1750 p1 1500 p2 1500

因此,再次应用算法: p3 2250 p4 2250 p5 2250 p6 2250 p1 2500 p2 2500

..它似乎有效。

于 2013-07-31T14:12:01.643 回答
0

在每一轮的每一步,总是将价值最高的盒子交给当前财富最低的玩家。如果在任何时候,有玩家与财富挂钩,随机选择一个。

您可能希望也可能不想在任何一轮中为同一玩家分配多个盒子,这取决于您。

除非您知道接下来会出现什么盒子,或者计划在以后的几轮中重新分配前几轮的盒子,否则我认为您无法击败这种简单的方法。

于 2013-07-31T14:05:43.447 回答