Rによる簡単な組合せシミュレーション

 以下の組合せの確率をシミュレーションで求めてみたいです。

 R小学校の6年1組は遠足で京都に行くことになりました。クラスの総数は30人であり、そこからくじ引き(無作為)に5人選んで6つの班を作ります。Aくんが同じクラスのBさんと同じ班になる確率はいくつでしょうか。

コード

simulation <- function(nreps) {
    team_info <- list()
    team_info$count_same_team <- 0
    for (rep in 1:nreps) {
        team_info$num_class <- 1:30
        team_info$chosen <- 0
        team_info <- choose_team(team_info, 5)
        if (team_info$chosen > 0) next
        team_info <- choose_team(team_info, 5)
        if (team_info$chosen > 0) next
        team_info <- choose_team(team_info, 5)
        if (team_info$chosen > 0) next
         team_info <- choose_team(team_info, 5)
        if (team_info$chosen > 0) next
        team_info <- choose_team(team_info, 5)
        if (team_info$chosen > 0) next
        team_info <- choose_team(team_info, 5)     
    }
    print(team_info$count_same_team / nreps)
}
        
choose_team <- function(han, size){
    team <- sample(han$num_class, size)
    han$chosen <- length(intersect(1:2, team))
    if (han$chosen == 2)
        han$count_same_team <- han$count_same_team + 1
    han$num_class <- setdiff(han$num_class, team)
    return(han)
}
> simulation(100)
 [1] 0.14

【参考文献】
『アート・オブ・Rプログラミング』8.6.3 応用例:組合せシミュレーション(PP.203-204)