RandQMC Library


NOTE (May 2, 2008)
====
This page is a bit out of date. I am planning to update the library soon...

USER'S GUIDE
============

We strongly suggest that you read the user's guide (postcript or pdf) before using this library.


FILES REQUIRED TO USE RANDQMC (version 2.2 -- September 2004)
==========================================================

randqmcl.tar.gz is an archive that contains all the files that you
will need to use the randqmc library for intel (Linux). To uncompress it 
run the command:

% tar -zxvf randqmcl.tar.gz


If you prefer you can download individual files separately. 
The files you will need are listed below.

1) libqmc.a for intel, or libqmc.a for sun.
2) qmc.h
3) makeinput.c (optional but useful)

Most programs need to generate non-uniform random numbers: some 
procedures to do that are available in Dist.h (Dist.c)

SOBOL' DIRECTION NUMBERS
========================
Can be found here for up to 360 dimensions.
The format is the same as in the 1987 paper by Bratley and Fox.


IMPORTANT NOTICES
(1) (Feb. 18, 2005) There seems to be a problem with the implementation of the random linear scrambling with Sobol'. We do not recommend to use it until it is fixed. (2) When using the function RPoint() for problems with a random dimension, if the Korobov method is used, the number of points n should be prime and the generator a should be a primitive element modulo n. This condition on a is satisfied if you are using the makeinput program and you choose a prime n. (3) Also, please note that when the random dimension feature is used, the coordinates must be generated one after the other, in order, i.e., RPoint(0),RPoint(1),RPoint(2).... Trying to do something like RPoint(0),...,RPoint(100), RPoint(105), RPoint(101),... will not work. (4) As mentioned on page 12 of the user's guide, our implementation of the (nested uniform) scrambling of Owen was not as efficient as, e.g., the one in the SamplePack software of Thomas Kollig and Alexander Keller, or the code of Owen, and has not been fully tested. For this reason it has been removed from the current version (2.0) of the package. The user's guide has been updated (as of January 13, 2004) to take this into account. (5) We are fixing bugs as they are reported to us. Here is a list of some of them and when they have been fixed.
PROBLEMS ?: Please report any problems or suggestions to . This library is for personal or academic purposes only. For commercial use, contact . You may not distribute this library without the express consent of the authors. There is no guarantee coming with this software.
EXAMPLE 1 ========= One of the programs that uses RandQmc is the asian option program. The additional files that it requires can be downloaded as a package option.tar.gz or individually below. 1) option.c 2) AsianOption.h 3) AsianOption.c 4) makefile In order to build the program the files in option.tar.gz must be placed in the same directory as Dist.c, Dist.h, makeinput.c, qmc.h and libqmc.a. This program uses functions listed in AsianOption.h Its executable (option) can be created using the makefile "makefile" given there. It can then be executed by running the command % ./asianoption input.dat where input.dat is an input file for the RandQmc library; it describes which method should be used and gives its parameters. This file can be created by running % ./makeinput input.dat which will start a program that will prompt the user to give the characteristics of the QMC method to use.
EXAMPLE 2 ========= Another program that uses RandQMC is the probability of ruin program. It estimates the probability of ruin of an insurance company using the regenerative method. The additional files it requires can be downloaded as a package ruin.tar.gz or individually below. 1) SimRuinReg.c 2) ruinREG.h 3) ruinREG.c 4) makeREG 5) ParamRuin.dat In order to build the probability of ruin program the files in ruin.tar.gz must be placed in the same directory as Dist.c, Dist.h, makeinput.c, qmc.h and libqmc.a. This program uses functions defined in ruinREG.h. In this case, the dimension is random (not upper bounded a priori), therefore only Monte Carlo, Korobov (with n prime), or polynomial Korobov methods can be used. The executable can be created by using the makefile "makeREG". It can then be executed by running the command % ./SimRuinReg input.dat ParamRuin.dat As in the first example, the file input.dat contains the data about the point set to be used and can be created as explained above.