Powerful Random Number Generators & Sampling Methods
Risk Solver gives you more choices for random number generation and more sampling methods than other risk analysis products for Excel.
Random numbers form the basis of Monte Carlo simulation. Risk Solver's Options dialog lets you choose among four high-quality random generators:
- Park-Miller 'Minimal' Generator with Bayes-Durham shuffle and safeguards: traditional random number generator with a period of 231-2.
- Combined Multiple Recursive Generator (CMRG) of L'Ecuyer: period of 2191, and excellent statistical independence of samples.
- Well Equidistributed Long-period Linear (WELL1024) generator of Panneton, L'Ecuyer and Matsumoto: period of 21024 with very good statistical independence.
- Mersenne Twister generator of Matsumoto and Nishimura: period of 219937-1, but samples are not as 'equidistributed' as for the WELL1024 and CMRG generators.
Risk Solver can generate Monte Carlo samples from a wide range of probability distributions, using any of three methods: Standard Monte Carlo, Latin Hypercube, and Sobol numbers. Latin Hypercube sampling is a well-know method for reducing sample variance, enabling you to obtain more accurate simulation results with fewer Monte Carlo trials.
Sobol numbers -- generated with a random shift for "Randomized Quasi Monte Carlo" -- are an innovation in Risk Solver that's not found in other risk analysis products for Excel. They are widely used by developers in quantitative finance. For low to moderate dimensional problems, Sobol numbers offer the "best of both worlds" -- the speed of Standard Monte Carlo with the "coverage" of Latin Hypercube sampling.
Risk Solver offers multiple streams of random numbers. Most Monte Carlo simulation tools generate a single sequence of random numbers, which introduces a subtle dependence between the samples for all distributions in one trial. In many cases the effect is too small to make a difference -- but in some cases, found in financial engineering and other demanding applications, better results are obtained if independent random number sequences (streams) are used for each distribution in the model. With the PsiSeed() function, you can create a separate random number stream for a specific distribution.