First off, 100 is not divisible by 15 so this answer will go up to 105 instead.
Start by creating a matrix of integers 1:105
with 105/15
rows. Then we simply sample one column for each row. This way we get a random value from each of our ranges without using a loop.
## set up
n <- 105
m <- matrix(1:n, nrow=n/15, byrow=TRUE)
## execute
m[cbind(1:nrow(m), sample(ncol(m), nrow(m)))]
# [1] 5 23 33 51 74 77 103
Here we can see a run of 10 replications. Each column is one sample.
replicate(10, m[cbind(seq(nrow(m)), sample(ncol(m), nrow(m)))])
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 4 11 10 3 8 5 14 11 5 15
# [2,] 20 20 17 23 25 25 24 19 23 19
# [3,] 45 34 42 35 35 42 32 38 39 44
# [4,] 55 54 49 55 54 46 53 60 47 46
# [5,] 67 73 61 62 75 66 67 62 61 69
# [6,] 83 83 78 79 77 89 79 87 87 86
# [7,] 91 102 95 104 96 94 93 95 100 97