20/02/09 08:42:25.56 +DmUozks.net
>>218
シミュレーションしてみたら、0.5前後の値が返ってきた。
seat.n <- function(n){ # n: 生徒の人数
s=1:n # 残り座席番号
s1=sample(s,1) # 最初の生徒1の座る席番号s1
s=s[-s1] # s1を残り座席から除く
for(i in 2:(n-1)){ # 生徒2から生徒n-1まで
if(i %in% s){ # 生徒iの座席iが残っていれば
s=s[-which(s==i)] # その座席をsから除く
}else{
ls=length(s) # 残り座席数 length of s
si=sample(ls,1) # 1:lsの中から1個選びsiとする
s=s[-si] # si番目の座席を除く
}
}
s==n # 生徒nの席番号はnかの真偽を返す
}
sim <- function(n,k=1e4){
mean(replicate(k,seat.n(n)))
}