# [R] R random number generation

(Ted Harding) Ted.Harding at manchester.ac.uk
Thu Oct 23 22:51:07 CEST 2008

```On 23-Oct-08 19:58:12, hiphop wrote:
>
> i have to generate random numbers from length 2 to 30 and
> length two should have the numbers 1,2 and length 3 should
> have the numbers 1,2,3 so on and so forth till size 30.
> i should get an sequence like 2222221 or 1111112 till both
> the values appear and for 3 it should be 1222223 or 3331112.
> i should get similar output for all sizes which means i should
> get 30 sequences.but am getting only one sequence.
>
> y=0;
> for (i in 1:3)
> {
> while(y!=i)
> {
> y=sample(1:3,replace=TRUE);
> }
> }

If I understand you correctly, the following should do what
you are looking for (i.e. sample repeatedly from (1:k) until
you first have all of 1:k in the sample, repetitions being
allowed):

mksample <- function(k){
All <- (1:k) ; Left <- rep(TRUE,k) ; Done <- FALSE
Result <- NULL
while(! Done){
j <- sample(All,1)
Result <- c(Result, j); Left[j] <- FALSE
Done <- (sum(Left)==0)
}
Result
}

Example:
mksample(5)
# [1] 1 4 4 5 2 1 1 3

"3331112") you presented it as a sequence of runs ("333",
"111","2") -- maybe this is not relevant to your query.

Hoping this helps,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 23-Oct-08                                       Time: 21:51:04
------------------------------ XFMail ------------------------------

```