假设有一群4n人,他们每个人都排在他们希望成为一个较小的4人组的前三名中。随机创建这些组的好算法是什么,但是一个人有更多机会与他们列表中的第一,第二和/或第三人在一起?
即。加权分组算法。 (谷歌发现的那些都是用于网络的)
答案 0 :(得分:3)
此问题未明确。一种简单的方法Metropolis--Hastings。定义分数函数,其中例如分组的分数是满足的第一选择的数量的一倍加上三倍加上满足的第二选择的数量加上满足的第三选择的数量的两倍。从完全随机的组开始。随机选择两个人(由于技术原因替换),交换它们,并重新计算分数。如果Math.random()
大于新分数除以旧分数,则将其换回。这种马尔可夫链蒙特卡罗过程收敛于得分加权随机分组。