我是那种乐于坐在那里,在很长一段时间内反复尝试,试图解决问题的人。然而,我完全陷入了困境,我想也许有人能给我指明正确的方向。
我正在尝试创建一个脚本,允许1-6个玩家被分配一个对象,每个对象都有一个特定的点值。
脚本需要平均每个玩家获得的点数。
它需要能够添加一组新的对象,然后根据已获得的累积点数进行分配,并尝试将它们进行分配,以使总数尽可能相等。
[tl;比特博士]
假设有6个玩家。
在第一轮中,6个盒子是“赢”的:两个大盒子@“1000分”,两个中盒子@“500分”,两个小盒子@“250分”。
很明显,剧本必须给每个玩家一个盒子。
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
等了好几轮。
基本上,它需要解决每一轮如何奖励积分,同时保持每个球员的总积分尽可能接近。
任何帮助都会非常感谢,因为这个概念让我头痛,试图找出什么是最好的方法,更不用说实际的代码本身了!
最佳答案
我认为有一个非常简单的解决方案可以用伪代码解决您的问题:
第一次分配“盒子”是你想要的,可能是随机的
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
…好像很管用。