Random Winner Based on Percentage Weighting
The variables a, b, and c are always the same, so it makes sense to move them out of the loop. The same goes for sums of these variables, such as a + b + c, and b + c.

The conditions used to evaluate randomNumber can be simplified,
and it will be good to join them with else if to avoid unnecessarily repeated evaluations. Something like this:

double a = 0.4917127071823204; // ~49% to win
double b = 0.3922651933701657; // ~39% to win
double c = 0.1160220994475138; // ~11% to win
double min = 0;
double max = a + b +c;
double ab = a + b;

for (int i = 0; i &lt; 100000; i++)
{
    double randomNumber = rand.NextDouble() * (max - min) + min;

    if (randomNumber &lt;= a)
    {
        aWon += 1;
    }

    else if (randomNumber &lt;= ab)
    {
        bWon += 1;
    }

    else
    {
        cWon += 1;
    }
}