- 608 名前:卵の名無しさん mailto:sage [2020/09/04(金) 08:35:49 ID:Si7GUsDW.net]
- f <- function(Box,Sum){ # Box:箱の数,Sum:入った数字の合計の値
# 重複を許してn個からr個を選ぶ組み合わせを列挙する H <- function(n, r, v=1:n) { if (r == 0) NULL else if (r == 1) matrix(v, n, 1) else if (n == 1) matrix(v, 1, r) else rbind(cbind(v[1], H(n, r - 1, v)), H(n - 1, r, v[-1])) } h=H(Box,Sum-Box) # Box個の中から重複を許してSum-Box個を選ぶ nh=nrow(h) # その組み合わせ数 re=matrix(rep(NA,Box*nh),nrow=nh,ncol=Box) # メモリ確保 a=numeric(Box) for(i in 1:nh){ # 各々の選び方iに対して for(j in 1:Box) a[j]=sum(j==h[i,]) # どの箱が何個選択されたかを re[i,] =a # reのi行に入れる } return(re+1) # 1から始まる分を補正 } f(Box=3,Sum=9) f(Box=10,Sum=100)
|
|