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.