d <-
  matrix(c(1, 2, 2, 4, 0, 1, 2, 1, 3, 1, 1, 1, 0, 0, 1, 9, 4, 8, 2, 11), 4)
k = 1
repeat {
  i <- sample(1:(dim(d)[1]), 1)
  a <- matrix(0, dim(d)[1], dim(d)[2])
  for (j in 1:dim(d)[2]) {
    a[, j] <- c(sample(d[, j], i), rep(0, dim(d)[1] - i))
    if (sum(a) == 30) {
      print(a)
      break
    }
  }
  if (k > 10000)
    break
  k <- k + 1
}
结果有很多很多,当然没想办法识别重复结果,所以设了k作终止条件。你试试吧。
另外,不要你的币,我的币已经够多的了。就是玩。