asa144


asa144, a C++ code which randomly generates an RxC contingency table, by James Boyett.

This is a version of Applied Statistics Algorithm 144.

The code accepts a table shape (the number of rows and columns), and two vectors, the lists of row and column sums. There may be 0, 1, or many tables with nonnegative, integral entries that have the given shape and sums. The program will generate, at random, one of the tables and return it. Repeated calls to the program will return new random selections.

For example, suppose M = 2, N = 3, row sum = (/ 6, 5 /) and column sum = (/ 3, 4, 4 /), then here are two tables that satisfy the constraints:

        1  2  3
        2  2  1
      
and
        3  0  3
        0  4  1
      

Licensing:

The information on this web page is distributed under the MIT license.

Languages:

asa144 is available in a C version and a C++ version and a Fortran90 version and a MATLAB version and an Octave version.

Related Data and Programs:

asa144_test

asa159, a C++ code which randomly generates an RxC contingency table.

subset, a C++ code which includes a routine called IMAT_01_ROWCOLSUM which generates a (0,1) matrix with given row and column sums.

Author:

Original Fortran77 version by James Boyett; This version by John Burkardt.

Reference:

  1. James Boyett,
    Algorithm AS 144: Random R x C Tables with Given Row and Column Totals,
    Applied Statistics,
    Volume 28, Number 3, 1979, pages 329-332.

Source Code:


Last revised on 29 January 2020.