Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何在多个集合上创建均匀分布?_Algorithm_Random - Fatal编程技术网

Algorithm 如何在多个集合上创建均匀分布?

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

这是一个爱好项目,将用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 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。对于最后一种方法,我可能会以列而不是行的形式进行。选择第一场比赛的队列前面,随机选择下一场比赛,获取最高优先级(最低分数)司机,并把他们放在最高的位置。冲洗,重复。嗯…应该就是这个答案。试着去编码,看看会发生什么。