Histogram of Maxwell-Boltzmann distribution
Static classes

You've (correctly) marked Normalization as static. You should do the same for every other class in your program - they are all currently being used as statics.

Expression bodies

C# has a wonderful bit of syntactic sugar - expression bodies - that lets you rewrite this:

public static double MaxwellVariance(double mass, double temperature)
{
    return Math.Sqrt(KB * temperature / mass);
}


as

public static double MaxwellVariance(double mass, double temperature) =&gt;
    Math.Sqrt(KB * temperature / mass);


Classes

You're in C#, so you're stuck without the ability to have global functions. It's somewhat similar to Java in this way: it really pushes you to think about your code in an OOP style.

Going down this path, you would make a class to encapsulate your graph, which would take most of the code out of your Main. Potentially, everything up to and including the initialization of your point list could go in the constructor, and the PlotForm calls could go in a plot method. There are some advantages to this approach, including reusability, re-entrance, and testability.

As for MaxwellBolzman - I think you should refactor it to be a non-static class, with members for mass and temperature. random can be accepted as an optional parameter or the class could instantiate it itself. That will simplify many things:


Variance will turn into a one-line property with an expression body
Component and Speed will turn into parameter-less properties


Names

This is minor, but I find the Maxwell prefixes in all of the methods of MaxwellBolzman to be redundant; I think they would be even more legible if you simply named them Variance, Component and Speed.

Loops

I would find Speed more legible as

double sum = 0;
for (int i = 0; i &lt; 3; i++) {
    double comp = Component;
    sum += comp*comp;
}
return Math.Sqrt(sum);