asa205, a FORTRAN90 code which enumerates contingency tables.
The code is Applied Statistics Algorithm 205.
This algorithm generates contingency tables, which are M by N tables of nonnegative integers with specified row and column sums.
For example, for the row sum vector (1,3) and column sum vector (1,1,2), there are "essentially" only the two solutions:
0 0 1 1 1 1and
0 1 0 1 0 2We could generate another solution by permuting the first two columns of the second solution, but ASA205 doesn't consider that a distinct solution.
Note that it is possible to specify a problem for which there are no corresponding contingency tables at all. The simplest way is if the row and column sum vectors don't themselves sum up to the same value. But there is also a "technical" condition that the two vectors have to satisfy in order for a solution to exist.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
asa205 is available in a FORTRAN90 version.
ASA144, a FORTRAN90 code which randomly generates an RxC contingency table.
ASA159, a FORTRAN90 code which randomly selects one of the contingency tables corresponding to a given set of row and column sums.
SUBSET, a FORTRAN90 code which includes a routine called I4MAT_01_ROWCOLSUM which generates a (0,1) matrix with given row and column sums.