you have a starting point at 12000 so that's a constant

the remainder is 20000 of which you need a randomized chunk

let's assume the startvalue is 12000

also let's assume you want granularity of 500 ticks

then endvalue would be 12000 + ((random(40)+1)*500)

because random(x) provides values from 0 -> (x-1)

we want 1 -> x so we add 1 to the random before we multiply anything

let's assume you want granularity of 100 ticks

then endvalue would be 12000 + ((random(200)+1)*100)

let's assume you want granularity of 250 ticks

then endvalue would be 12000 + ((random(80)+1)*250)

let's assume you want granularity of 1000 ticks

then endvalue would be 12000 + ((random(20)+1)*1000)

does that help at all