Algorithm 如何在多个集合上创建均匀分布?
这是一个爱好项目,将用Python实现,但这并不重要。我主要是在寻找一个好的算法 我想主办一场有2到30名车手的比赛(Algorithm 如何在多个集合上创建均匀分布?,algorithm,random,Algorithm,Random,这是一个爱好项目,将用Python实现,但这并不重要。我主要是在寻找一个好的算法 我想主办一场有2到30名车手的比赛(num\u drivers)。该赛事有2到12场比赛(num_races),我希望每个车手都有一个公平的机会,根据他们在开始时的位置,使用一些随机的定位。问题是,在每次比赛中,我应该为每个车手分配哪些起始位置 例如:对于具有num_races=3和num_drivers=4(命名为“A”到“D”)的事件,将需要一个非常好的设置 Race 1: A B C D Race 2: C
num\u drivers
)。该赛事有2到12场比赛(num_races
),我希望每个车手都有一个公平的机会,根据他们在开始时的位置,使用一些随机的定位。问题是,在每次比赛中,我应该为每个车手分配哪些起始位置
例如:对于具有num_races=3
和num_drivers=4
(命名为“A”到“D”)的事件,将需要一个非常好的设置
Race 1: A B C D
Race 2: C D B A
Race 3: D B A C
极点位置的值为1,第二个位置的值为2,依此类推。因此,此设置为每个驱动程序提供了相当相等的值:
A: 1+4+3 = 8
B: 2+3+2 = 7
C: 3+1+4 = 8
D: 4+2+1 = 7
最后,理想情况下,每个驾驶员的位置总和应与其他驾驶员相同。当车手的数量和比赛的数量可以变化时,对于我的问题,什么是一个好的通用算法(在伪代码中)?是否已经有了一个算法可供研究?我从以下内容开始:
Race 1: A B C D
Race 2: A B C D
Race 3: A B C D
并按比赛编号旋转每一行
Race 1: A B C D
Race 2: D A B C
Race 3: C D A B
给予:
A = 1 + 2 + 3 = 6
B = 2 + 3 + 4 = 8
C = 3 + 4 + 1 = 8
D = 4 + 1 + 2 = 7
这是一个不错的发行版,大概和你将得到的(我想!)这么大的池一样好
如果你有很多司机,随机选择就行了
你总是可以这样做,找到你的低点和高点,并纠正闭环。因此,在上面的示例中,我注意到A is我在github上找到了一个工作良好的PHP脚本,它为我解决了这个问题。 因此,如果有人对我的问题的答案感兴趣:
我会在Math.SE.good idea@Rishav上问这个问题,我也会把它放在那里。(或者已经有某种“链接”到其他stackoverflow站点了吗?我已经有一段时间没有在这里了……不,你可以单独问,但我想你必须更清楚地定义你的目标。潜在的是平均值的平方和。你最后的方法听起来很有趣。(我更新了我的帖子,以显示预期的车手和比赛数量,我有一种感觉,这种加权队列可能是最好的方式)哇!你也是一名业余车手!@mawimawi Cool。对于最后一种方法,我可能会以列而不是行的形式进行。选择第一场比赛的队列前面,随机选择下一场比赛,获取最高优先级(最低分数)司机,并把他们放在最高的位置。冲洗,重复。嗯…应该就是这个答案。试着去编码,看看会发生什么。