I asked on Math.SE and was advised to try here instead.
I need to draw from a Maxwell-Boltzmann velocity distribution to initialise a molecular dynamics simulation. I have the PDF but I'm having difficulty finding the correct CDF so that I can make random draws from it.
The PDF I am using using is:
$$f(v)=\sqrt \frac{m}{2\pi kT} \times exp \left( \frac{-mv^2}{2kT}\right) $$
I am told that to find the CDF from the PDF we perform:
$$CDF(x)= \int_{-\infty}^x PDF(x) dx $$
After integrating $ f(v) $ I get:
$$ CDF(v)= \sqrt \frac{m}{2\pi kT} \times \left( \frac{\sqrt\pi\times erf \left( \frac{mv}{2\pi kT} \right) }{2\times \left( \frac{m}{2kT} \right)} \right) $$
$$CDF(v)= _{-\infty} ^{x} \left[ {\sqrt \frac{m}{2\pi kT} \times \left( \frac{\sqrt\pi\times erf \left( \frac{mv}{2\pi kT} \right) }{2\times \left( \frac{m}{2kT} \right)} \right)} \right] $$
After I reach this point I am unable to proceed as I do not know how to evaluate something between $x$ and ${-\infty}$.
I am also concerned that I have not done the integration correctly.
I want to implement the CDF in C++ in the end so I can draw from it. Does anyone know if there will be a problem with doing this because of the erf, or will I be alright with this GSL implimentation ?
Thanks for your time.
@bryansis2010 on Math.SE says that I can evaluate in the range $x$ to $0$ instead of $-\infty$ as we do not drop below 0 Kelvin.
Would this then make the CDF:
$$ CDF(v)= \sqrt \frac{m}{2\pi kT} \times \left( \frac{\sqrt\pi\times erf \left( \frac{mv}{2\pi kT} \right) }{2\times \left( \frac{m}{2kT} \right)} \right) $$
as $erf(0)=0$
Is this correct?