Hi Duncan, You are right. The idea of the derivation consists in 'throwing' k placeholders ("*" in the example below) in the list of the individuals of the population. For example, if the population is letters[1:6], and the sample size is 4, the following code generates uniformly a 'sample'.
> n <- 6; k <- 4 > set.seed(2) > xxx <- rep("*", n + k) > ind <- sort(sample(2 : (n+k), k)) > xxx[setdiff(1 : (n+k), ind)] <- letters[seq.int(n)] > noquote(xxx) [1] a b * c d * * e f * This represents the sample (b, d, d, f). I am still missing the "all" I need to do that you mention, that is how I can transform the vector xxx into something more readily usable, like c(b, d, d, f), or even a summary of counts. I guess I am looking for a bit of R trickery here... Thank you, Giovanni ________________________________________ From: Duncan Murdoch [murdoch.dun...@gmail.com] Sent: Wednesday, September 17, 2014 14:07 To: Giovanni Petris; r-help@R-project.org Subject: Re: [R] Generating unordered, with replacement, samples On 17/09/2014 2:25 PM, Giovanni Petris wrote: > Hello, > > I am trying to interface in my teaching some elementary probability with > Monte Carlo ideas. In sampling from a finite population, the number of > distinct samples of size 'k' from a population of size 'n' , when individuals > are selected with replacement and the selection order does not matter, is > choose(n + k -1, k). Does anyone have a suggestion about how to simulate > (uniformly!) one of these possible samples? In a Monte Carlo framework I > would like to do it repeatedly, so efficiency is of some relevance. > > Thank you in advance! I forget the details of the derivation of that count, but the number suggests it is found by selecting k things without replacement from n+k-1. The sample() function in R can easily give you a sample of k integers from 1:(n+k-1); "all" you need to do is map those numbers into your original sample of k from n. For that you need to remember the derivation of that formula! Duncan Murdoch ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.