forked from johannesgerer/jburkardt-cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasa159.html
216 lines (185 loc) · 5.15 KB
/
asa159.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<html>
<head>
<title>
ASA159 - Random generation of a table.
</title>
</head>
<body bgcolor="#EEEEEE" link="#CC0000" alink="#FF3300" vlink="#000055">
<h1 align = "center">
ASA159 <br> Random generation of a table.
</h1>
<hr>
<p>
<b>ASA159</b>
is a C++ library which
constructs a table having given row and column sums,
by Michael Patefield;
</p>
<p>
<b>ASA159</b> is Applied Statistics Algorithm 159. Source code for many
Applied Statistics Algorithms is available through
<a href = "http://lib.stat.cmu.edu/apstat">STATLIB</a>.
</p>
<p>
<b>ASA159</b> 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 routine will report the case if there are no
candidates. If there is at least one candidate, then the routine
will choose one, uniformly over the number of distinct candidates.
</p>
<p>
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:
<pre>
1 2 3
2 2 1
</pre>
and
<pre>
3 0 3
0 4 1
</pre>
</p>
<h3 align = "center">
Licensing:
</h3>
<p>
The computer code and data files described and made available on this web page
are distributed under
<a href = "../../txt/gnu_lgpl.txt">the GNU LGPL license.</a>
</p>
<h3 align = "center">
Languages:
</h3>
<p>
<b>ASA159</b> is available in
<a href = "../../c_src/asa159/asa159.html">a C version</a> and
<a href = "../../cpp_src/asa159/asa159.html">a C++ version</a> and
<a href = "../../f77_src/asa159/asa159.html">a FORTRAN77 version</a> and
<a href = "../../f_src/asa159/asa159.html">a FORTRAN90 version</a> and
<a href = "../../m_src/asa159/asa159.html">a MATLAB version</a>.
</p>
<h3 align = "center">
Related Data and Programs:
</h3>
<p>
<a href = "../../cpp_src/asa144/asa144.html">
ASA144</a>,
a C++ library which
randomly generates an RxC contingency table.
</p>
<p>
<a href = "../../cpp_src/subset/subset.html">
SUBSET</a>,
a C++ library which
includes a routine called
<b>I4MAT_01_ROWCOLSUM</b> which
generates a (0,1) matrix with given row and column sums.
</p>
<h3 align = "center">
Author:
</h3>
<p>
Original FORTRAN77 version by Michael Patefield;
Matlab version by John Burkardt.
</p>
<h3 align = "center">
Reference:
</h3>
<p>
<ol>
<li>
Michael Patefield,<br>
Algorithm AS 159:
An Efficient Method of Generating RXC Tables with
Given Row and Column Totals,<br>
Applied Statistics,<br>
Volume 30, Number 1, 1981, pages 91-97.
</li>
</ol>
</p>
<h3 align = "center">
Source Code:
</h3>
<p>
<ul>
<li>
<a href = "asa159.cpp">asa159.cpp</a>, the source code.
</li>
<li>
<a href = "asa159.hpp">asa159.hpp</a>, the include file.
</li>
<li>
<a href = "asa159.sh">asa159.sh</a>, commands to
compile the source code.
</li>
</ul>
</p>
<h3 align = "center">
Examples and Tests:
</h3>
<p>
<ul>
<li>
<a href = "asa159_prb.cpp">asa159_prb.cpp</a>, a sample problem.
</li>
<li>
<a href = "asa159_prb.sh">asa159_prb.sh</a>,
commands to compile, link and run the sample problem.
</li>
<li>
<a href = "asa159_prb_output.txt">asa159_prb_output.txt</a>,
the output file.
</li>
</ul>
</p>
<h3 align = "center">
List of Routines:
</h3>
<p>
<ul>
<li>
<b>I4_MAX</b> returns the maximum of two I4's.
</li>
<li>
<b>I4_MIN</b> returns the minimum of two I4's.
</li>
<li>
<b>I4MAT_PRINT</b> prints an I4MAT, with an optional title.
</li>
<li>
<b>I4MAT_PRINT_SOME</b> prints some of an I4MAT.
</li>
<li>
<b>I4VEC_PRINT</b> prints an I4VEC.
</li>
<li>
<b>I4VEC_SUM</b> sums the entries of an I4VEC.
</li>
<li>
<b>R8_UNIFORM_01</b> is a unit pseudorandom R8.
</li>
<li>
<b>RCONT2</b> constructs a random two-way contingency table with given sums.
</li>
<li>
<b>S_LEN_TRIM</b> returns the length of a string to the last nonblank.
</li>
<li>
<b>TIMESTAMP</b> prints the current YMDHMS date as a time stamp.
</li>
</ul>
</p>
<p>
You can go up one level to <a href = "../cpp_src.html">
the C++ source codes</a>.
</p>
<hr>
<i>
Last revised on 10 March 2009.
</i>
<!-- John Burkardt -->
</body>
</html>