[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.
> please help. this is my code
>
> 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
I'm not clear about why, in your illustrations (such as
"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 ------------------------------
More information about the R-help
mailing list