annotate main/comm/randint.m @ 0:6b33357c7561 octave-forge

Initial revision
author pkienzle
date Wed, 10 Oct 2001 19:54:49 +0000
parents
children 039e2a73aa8d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
1 ## Copyright (C) 2001 Laurent Mazet
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
2 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
4 ## it under the terms of the GNU General Public License as published by
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
5 ## the Free Software Foundation; either version 2 of the License, or
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
6 ## (at your option) any later version.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
7 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
11 ## GNU General Public License for more details.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
12 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
14 ## along with this program; if not, write to the Free Software
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
15 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
16
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
17 ## usage: b = randint (n, [m, [range, [seed]]])
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
18 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
19 ## Generate a matrix of random binary numbers.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
20 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
21 ## n: number of rows.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
22 ## m: number of columns (by default m is equal to n).
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
23 ## range: range of random numbers. if range is a scalar the integer range
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
24 ## is [0, range-1], else, the ouput range is [range(1), range(2)].
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
25 ## seed: seed of the random generator.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
26 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
27 ## b : random matrix.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
28
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
29 ## 2001 FEB 07
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
30 ## initial release
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
31
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
32 function b = randint (n, m, range, seed)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
33
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
34 switch (nargin)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
35 case 1,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
36 m = n;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
37 range = [0 1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
38 seed = Inf;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
39 case 2,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
40 range = [0 1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
41 seed = Inf;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
42 case 3,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
43 seed = Inf;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
44 otherwise
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
45 error ("b = randint (n, [m, [range, [seed]]])");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
46 endswitch
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
47
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
48 ## Check range
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
49 if (length (range) == 1)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
50 range = [0, range-1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
51 elseif ( prod (size (range)) != 2)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
52 error ("randint: range must be a 2 element vector");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
53 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
54 range = sort (range);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
55
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
56 ## Check seed;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
57 if (!isinf (seed))
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
58 old_seed = rand ("seed");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
59 rand ("seed", seed);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
60 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
61
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
62 b = range (1) - 1 + ceil (rand (n, m) * (range (2) - range (1) + 1));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
63
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
64 ## Get back to the old
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
65 if (!isinf (seed))
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
66 rand ("seed", old_seed);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
67 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
68
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
69 endfunction