Sorry I misinterpreted your question, here is the actually working code simplified as much as possible so that it's easier to see what's going on.
double chance = 0.2; //we use real percentages now
//We choose a random number in [0...999] because we want enough precision for 1000
//different chances (100% to 0.1% or even 0%), we multiply our chance by 10 to
//move it from the 0.0~100 range into the 0~1000 range
if(Random.Next(0,1000) < chance * 10)
{
...
}
This is the old, wrong answer, here for reference only, I missed that it was .2% and not the 2% I assumed
I don't get the equation either its convoluted, we could do without the weird division by and 10 and it's not clear why a random number in [0...999] is chosen instead of a random number in [0..99], maybe that's why you're having trouble with it. Let's get rid of the unnecessary cast and the division and clean it up as much as we can. The equivalent and, in my opinion, much more readable version would be:
double chance = 2; //we use real percentages now
if(Random.Next(0, 100) < chance)
{
...
}