Hello,
I run a stake pool and through the command line I am able to see the block allocation for my pool at the start of the epoch.
Blocks are allocated per a lottery like you say, so each ada is a lottery ticket. If someones ada delegated to TBO is chosen to create a block, TBO creates it. Those future blocks are known from the start of the epoch. I always post TBO’s block allocation number (not date and times) into our telegram channel.
This is good because we know when we can perform updates etc. To the pool without missing a block