Mercurial > hg > octave-nkf
annotate liboctave/oct-rand.h @ 12283:0664a7ddd944 release-3-4-x
README.MacOS: Spelling corrections.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Fri, 28 Jan 2011 22:27:17 -0500 |
parents | 12df7854fa7c |
children | 7dd7cccf0757 |
rev | line source |
---|---|
4308 | 1 /* |
2 | |
11523 | 3 Copyright (C) 2003-2011 John W. Eaton |
4308 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
4308 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
4308 | 20 |
21 */ | |
22 | |
23 #if !defined (octave_rand_h) | |
24 #define octave_rand_h 1 | |
25 | |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
26 #include <map> |
4308 | 27 #include <string> |
28 | |
5730 | 29 #include "dColVector.h" |
4308 | 30 #include "dMatrix.h" |
4543 | 31 #include "dNDArray.h" |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
32 #include "lo-ieee.h" |
4308 | 33 |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
34 class |
6108 | 35 OCTAVE_API |
4308 | 36 octave_rand |
37 { | |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
38 protected: |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
39 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
40 octave_rand (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
41 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
42 public: |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
43 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
44 ~octave_rand (void) { } |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
45 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
46 static bool instance_ok (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
47 |
4308 | 48 // Return the current seed. |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
49 static double seed (void) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
50 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
51 return instance_ok () ? instance->do_seed () : octave_NaN; |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
52 } |
4308 | 53 |
54 // Set the seed. | |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
55 static void seed (double s) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
56 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
57 if (instance_ok ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
58 instance->do_seed (s); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
59 } |
4308 | 60 |
10709
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
61 // Reset the seed. |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
62 static void reset (void) |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
63 { |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
64 if (instance_ok ()) |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
65 instance->do_reset (); |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
66 } |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
67 |
5730 | 68 // Return the current state. |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
69 static ColumnVector state (const std::string& d = std::string ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
70 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
71 return instance_ok () ? instance->do_state (d) : ColumnVector (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
72 } |
5730 | 73 |
74 // Set the current state/ | |
7533
ff52243af934
save state separately for each MT random number generator
John W. Eaton <jwe@octave.org>
parents:
7017
diff
changeset
|
75 static void state (const ColumnVector &s, |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
76 const std::string& d = std::string ()) |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
77 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
78 if (instance_ok ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
79 instance->do_state (s, d); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
80 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
81 |
10709
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
82 // Reset the current state/ |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
83 static void reset (const std::string& d) |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
84 { |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
85 if (instance_ok ()) |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
86 instance->do_reset (d); |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
87 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
88 |
4308 | 89 // Return the current distribution. |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
90 static std::string distribution (void) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
91 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
92 return instance_ok () ? instance->do_distribution () : std::string (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
93 } |
4308 | 94 |
95 // Set the current distribution. May be either "uniform" (the | |
7533
ff52243af934
save state separately for each MT random number generator
John W. Eaton <jwe@octave.org>
parents:
7017
diff
changeset
|
96 // default), "normal", "exponential", "poisson", or "gamma". |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
97 static void distribution (const std::string& d) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
98 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
99 if (instance_ok ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
100 instance->do_distribution (d); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
101 } |
4308 | 102 |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
103 static void uniform_distribution (void) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
104 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
105 if (instance_ok ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
106 instance->do_uniform_distribution (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
107 } |
4308 | 108 |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
109 static void normal_distribution (void) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
110 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
111 if (instance_ok ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
112 instance->do_normal_distribution (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
113 } |
4308 | 114 |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
115 static void exponential_distribution (void) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
116 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
117 if (instance_ok ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
118 instance->do_exponential_distribution (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
119 } |
5730 | 120 |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
121 static void poisson_distribution (void) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
122 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
123 if (instance_ok ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
124 instance->do_poisson_distribution (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
125 } |
5730 | 126 |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
127 static void gamma_distribution (void) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
128 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
129 if (instance_ok ()) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
130 instance->do_gamma_distribution (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
131 } |
5730 | 132 |
4308 | 133 // Return the next number from the sequence. |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
134 static double scalar (double a = 1.0) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
135 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
136 return instance_ok () ? instance->do_scalar (a) : octave_NaN; |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
137 } |
4308 | 138 |
139 // Return a matrix of numbers from the sequence, filled in column | |
140 // major order. | |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
141 static Matrix matrix (octave_idx_type r, octave_idx_type c, double a = 1.0) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
142 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
143 return instance_ok () ? instance->do_matrix (r, c, a) : Matrix (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
144 } |
4308 | 145 |
4543 | 146 // Return an N-dimensional array of numbers from the sequence, |
147 // filled in column major order. | |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
148 static NDArray nd_array (const dim_vector& dims, double a = 1.0) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
149 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
150 return instance_ok () ? instance->do_nd_array (dims, a) : NDArray (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
151 } |
4543 | 152 |
4308 | 153 // Return an array of numbers from the sequence. |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
154 static Array<double> vector (octave_idx_type n, double a = 1.0) |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
155 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
156 return instance_ok () ? instance->do_vector (n, a) : Array<double> (); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
157 } |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
158 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
159 private: |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
160 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
161 static octave_rand *instance; |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
162 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
163 enum |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
164 { |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
165 unknown_dist, |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
166 uniform_dist, |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
167 normal_dist, |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
168 expon_dist, |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
169 poisson_dist, |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
170 gamma_dist |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
171 }; |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
172 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
173 // Current distribution of random numbers. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
174 int current_distribution; |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
175 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
176 // If TRUE, use old RANLIB generators. Otherwise, use Mersenne |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
177 // Twister generator. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
178 bool use_old_generators; |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
179 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
180 // Saved MT states. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
181 std::map<int, ColumnVector> rand_states; |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
182 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
183 // Return the current seed. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
184 double do_seed (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
185 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
186 // Set the seed. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
187 void do_seed (double s); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
188 |
10709
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
189 // Reset the seed. |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
190 void do_reset (); |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
191 |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
192 // Return the current state. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
193 ColumnVector do_state (const std::string& d); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
194 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
195 // Set the current state/ |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
196 void do_state (const ColumnVector &s, const std::string& d); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
197 |
10709
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
198 // Reset the current state/ |
92a85ed5b86e
Don't special case color_property type when emitting factory default (bug #30118)
David Bateman <dbateman@free.fr>
parents:
10312
diff
changeset
|
199 void do_reset (const std::string& d); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
200 |
7537
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
201 // Return the current distribution. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
202 std::string do_distribution (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
203 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
204 // Set the current distribution. May be either "uniform" (the |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
205 // default), "normal", "exponential", "poisson", or "gamma". |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
206 void do_distribution (const std::string& d); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
207 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
208 void do_uniform_distribution (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
209 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
210 void do_normal_distribution (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
211 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
212 void do_exponential_distribution (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
213 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
214 void do_poisson_distribution (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
215 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
216 void do_gamma_distribution (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
217 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
218 // Return the next number from the sequence. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
219 double do_scalar (double a = 1.); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
220 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
221 // Return a matrix of numbers from the sequence, filled in column |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
222 // major order. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
223 Matrix do_matrix (octave_idx_type r, octave_idx_type c, double a = 1.); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
224 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
225 // Return an N-dimensional array of numbers from the sequence, |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
226 // filled in column major order. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
227 NDArray do_nd_array (const dim_vector& dims, double a = 1.); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
228 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
229 // Return an array of numbers from the sequence. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
230 Array<double> do_vector (octave_idx_type n, double a = 1.); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
231 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
232 // Some helper functions. |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
233 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
234 void initialize_ranlib_generators (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
235 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
236 void initialize_mersenne_twister (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
237 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
238 ColumnVector get_internal_state (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
239 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
240 void save_state (void); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
241 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
242 int get_dist_id (const std::string& d); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
243 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
244 void set_internal_state (const ColumnVector& s); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
245 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
246 void switch_to_generator (int dist); |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
247 |
a2950622f070
make octave_rand a proper singleton class
John W. Eaton <jwe@octave.org>
parents:
7533
diff
changeset
|
248 void fill (octave_idx_type len, double *v, double a); |
4308 | 249 }; |
250 | |
251 #endif |