Search code examples
rsampling

Sample exactly four maintaining almost equal sample distances


I am trying to generate appointment times for yearly scheduled visits. The available days=1:365 and the first appointment should be randomly chosen first=sample(days,1,replace=F)

Now given the first appointment I want to generate 3 more appointment in the space between 1:365 so that there will be exactly 4 appointments in the 1:365 space, and as equally spaced between them as possible.

I have tried

point<-sort(c(first-1:5*364/4,first+1:5*364/4 ));point<-point[point>0 & point<365]

but it does not always give me 4 appointments. I have eventually run this many times and picked only the samples with 4 appointments, but I wanted to ask if there is a more elegant way to get exactly 4 points as equally distanced a s possible.


Solution

  • I was thinking of equal spacing (around 91 days between appointments) in a year starting at the first appointment... Essentially one appointment per quarter of the year.

    # Find how many days in a quarter of the year
    quarter = floor(365/4)
    first = sample(days, 1)
    all = c(first, first + (1:3)*quarter)
    all[all > 365] = all[all > 365] - 365
    all
    sort(all)