Probability of drawing all balls in a non-uniformly distributed population I am wondering if there is a way of calculating the following:
I have a bag with 5 balls numbered from 1 through 5 that are going to be drawn. 
Due to different weights, the balls have different probabilities of being drawn:
$P(Ball1) = 0.4$
$P(Ball2) = 0.3$
$P(Ball3) = 0.1$
$P(Ball4) = 0.1$
$P(Ball5) = 0.1$  
There will be three draws. After each draw the balls are put back into the bag:


*

*Draw 1: Three balls

*Draw 2: Three balls

*Draw 3: Two balls 


Now, is it possible to calculate the probability that each ball will have been chosen at least once along the three draws?
Disclaimer: I am not sure if the title is totally correct, but I think that my problem is a variant of Expected number of uniques in a non-uniformly distributed population - and therefore the similar title. Correct the title as you think it may be more correct.
My question is how to calculate this:
$Pr(Ball1 > 0, Ball2 >0, Ball3 > 0, Ball4 >0, Ball5 > 0)$ given 3 + 3 + 2 balls drawn.
Edit: The balls that are drawn (3 + 3 + 2) are always drawn at once which would imply that the Fisher's noncentral hypergeometric distribution is what I am looking for. Note that if the drawing would happen ball by ball, Wallenius' noncentral hypergeometric distribution, would be the distribution of choice.
 A: Thus, with lots of help in the comments of the question, I have worked out the following solution in R. I think the result is correct, but am glad if anybody could review it. 
The algorithm from @whuber may be less costly to calculate. As soon as the amount of different balls and N of drawn balls rise, the the combn() function will fail due to too many combinations.
The result of the example in the question is p = 0.3993262 with Fisher's noncentral hypergeometric destribution and p = 0.3310244 with Wallenius' noncentral hypergeometric distribution.
Define the variables
<!-- language: lang-R -->
weights = c(0.4, 0.3, 0.1, 0.1, 0.1)
names = c("draw1","draw2","draw3")
drawN = c(3, 3, 2)

Create empty list to store data:
 <!-- language: lang-R -->

  N = length(weights)
  draws = list()
  probs = list()
  groups = list()

Calculate the probabilities for each possible draw of the three draws: 3 times 10 possibilities. As pointed out by @henry in the comments, I am using the Fisher's non-central hypergeometric distribution: dMFNCHypergeo()
  <!-- language: lang-r -->    
  for (i in seq(1,length(names))) {
    name <- names[i]   
    d <- data.frame(combn(seq(1,N),drawN[i]))
    colnames(d) <- paste(name,colnames(d),sep=".")
    draws <- c(draws,d)
    groups[[name]] <- colnames(d)


    urn <- rep(1,N)
    for (col in colnames(d)) {
      thisdraw <- rep(0,N)
      thisdraw[d[,col]] <- 1        
      probs[[col]] <- dMFNCHypergeo(thisdraw, urn, sum(thisdraw), weights)
    }  
  }

Combine the different draws and sum the wanted probabilities: 10 * 10 * 10 = 1000
  <!-- language: lang-R -->    
  groupcombs <- as.matrix(expand.grid(groups))
  groupprobs <- unlist(probs)


  psum = 0;
  is <- c()
  for (i in seq(1,dim(groupcombs)[1])) {
    d <- draws[groupcombs[i,]]
    if (length(unique(unlist(d))) == N) {
      p <- prod(groupprobs[names(d)])
      psum <- psum + p
    }
  }
  print(psum)

