mercredi 17 janvier 2018

R keep randomly generating numbers until all numbers within specified range are present

My aim is to randomly generate a vector of integers using R, which is populated by numbers between 1-8. However, I want to keep growing the vector until all the numbers between 1:8 are represented at least once, e.g. 1,4,6,2,2,3,5,1,4,7,6,8.

I am able to generate single numbers or a sequence of numbers using sample

x=sample(1:8,1, replace=T)
>x
[1] 6

I have played around with the repeat function to see how it might work with sample and I can at least get the generation to stop when one specific number occurs, e.g.

repeat {
   print(x)
   x = sample(1:8, 1, replace=T)
   if (x == 3){
       break
   }
} 

Which gives:

[1] 3
[1] 6
[1] 6
[1] 6
[1] 6
[1] 6
[1] 2

I am struggling now to work out how to stop number generation once all numbers between 1:8 are present. Additionally, I know that the above code is only printing the sequence as it is generated and not storing it as a vector. Any advice pointing me in the right direction would be really appreciated!




Aucun commentaire:

Enregistrer un commentaire