背景:
在this combinatorics question,问题是如何确定样本空间:8个不同的足球队可以配对下一轮比赛的方式。针对该问题的这一部分提出了两个不同的答案:28(见评论OP)和105(参见OP中的编辑和答案)。
我想手动执行此操作,以便在任何答案不正确的情况下尽量减少错误。
我尝试过:
teams = 1:8
names(teams) = c("RM", "BCN", "SEV", "JUV", "ROM", "MC", "LIV", "BYN")
split(sample(teams), rep(1:(length(teams)/2), each=2))
不幸的是,输出是一个列表,我希望一个向量能够运行如下:
unique(...,MARGIN=2)
有没有办法以优雅的方式做到这一点?
在现在删除的答案(谢谢)之后,我会选择
a <- replicate(1e5, unlist(split(sample(teams), rep(1:(length(teams)/2), each=2))))
模拟100,000个随机样本,然后运行
unique(a, MARGIN = 2)
。
但是我如何解释4对对手的顺序并不重要的事实,例如,LIV-BYN
和BYN-LIV
是相同的配对(字段)尽管有优势)?
答案 0 :(得分:0)
> u = ncol(unique(replicate(1e6, unlist(split(sample(teams), rep(1:(length(teams)/2), each=2)))), MARGIN = 2))
> u / (factorial(4) * 2^4)
[1] 105
unlist
的想法来自@Song Zhengyi,如果他的回答未删除,我会接受。完整的答案在上面的行中。
u
需要除以4!因为
BCN-RM, BYN-SEV, JUV-ROM, LIV-MC
与
完全相同LIV-MC, BCN-RM, BYN-SEV, JUV-ROM
或
BCN-RM, LIV-MC, BYN-SEV, JUV-ROM
等
术语2^4
是为了避免过度计数,因为对于每个可能的唯一抽签,每个配对都可以翻转而不会丢失(丢弃字段优势):BCN-RM
与{RM-BCN
相同1}},每次抽奖都有4对。
如果现场优势是考虑因素(现实生活)......
> u/factorial(4)
[1] 1680
我们最终获得了1,680次抽签。