For Brownian motion, boost Random is the obvious. You might need data structures such as uBLAS, array and possibly multiarray.
For functions, boost Function is an option but look at performance.
And smart pointers are used.
You can speedup the MC using boost Thread.