How can I use hashrate distribution to make inferences about when a specific pool will find a block? Miners find blocks randomly but also proportionally to the miner's hashrate. How can I best predict and express this 'chance' per mining pool?

For example, if F2Pool has had 10% of the total mining hashrate for the past week, does it make sense to say that they will probably find 10% of the blocks moving forward?

What's the best way to express the notion? I'd like to be able to say something like:

"F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes."

Obviously there is never a 100% chance to find a block in the next x blocks, so what's the accepted way of giving a number but also with that undertone of "or maybe never?"

Is there an API or library I can use to calculate/know these 'chance' values over time per mining pool?
For example, if F2Pool has had 10% of the total mining hashrate for the past week, does it make sense to say that they will probably find 10% of the blocks moving forward?

Assuming that a lot of miners don't switch, yes.

&quot;F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes.&quot;

You're asking two subtly different questions here.

Will I find the next block?
Will I find a block in the next ten minutes?

You could find the next block, eleven minutes from now. You could find a block in five minutes, building on a block that was discovered four minutes ago.
Will I find the next block?
This is pretty straightforward. If you have 10% of the hashrate, there's a probability of 0.1 that you will find it. If you have p proportion of the hashrate, there's a probability (1-(1-p)^n) that you will find a block in the next n blocks. For 10% hashrate, and 10 blocks, that's a chance of 65%. Far from a sure thing.
p = 0.1
Blocks  Probability of you getting a block
0       0.00000
1       0.10000
5       0.40951
10      0.65132
30      0.95761
50      0.99485
100     0.99997


Will I find a block in the next ten minutes?
Block discovery follows a poisson distribution. A poisson distribution represents a bunch of independent events, where one event happening has no effect on it happening in the future.
We want to know the odds of k blocks being found by anyone in a ten minute period, when there is an average of 1 block every ten minutes. Wikipedia already has a table for us:
k   P(k)
0   0.368
1   0.368
2   0.184
3   0.061
4   0.015
5   0.003
6   0.0005

But this isn't quite what we need - if ten blocks are found, there is a much better chance that one of them is ours than if one block is found. Multiply by expression above, and substitute k for n, and 0.1 (our proportion of hashrate) for p.
k   P(k)    P(k)*(1-(1-0.1)^k)
0   0.368   0.0000
1   0.368   0.0368
2   0.184   0.0350
3   0.061   0.0165
4   0.015   0.0052
5   0.003   0.0012
6   0.0005  0.0002
    Sum:    0.0949

Sum up the last column. We get a 9.49% chance, which is the chance that you will get at least one block in the next ten minutes if you have 10% of the hashrate. But, that doesn't mean that there's a 95% chance of having a block in ten minutes with 100% of the hashrate. It's not linear. If you have 100% of the hashrate:
k   P(k)    P(k)*(1-(1-1.0)^k)
0   0.368   0.0000
1   0.368   0.3680
2   0.184   0.1840
3   0.061   0.0610
4   0.015   0.0150
5   0.003   0.0030
6   0.0005  0.0005
    Sum:    0.6315

...then you have a 63.2% chance of having a block in the next ten minutes if you have all of the hashpower.
(Our calculations are low by about a twentieth of a percent, because we didn't consider cases like k=7. But I figure this is a good approximation.)