This repository has been archived by the owner on Aug 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathpsom_set_rand_seed.m
89 lines (84 loc) · 3.08 KB
/
psom_set_rand_seed.m
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
function seed = psom_set_rand_seed(seed)
% Change the seed of the uniform and Gaussian rand number generator
%
% SYNTAX:
% SEED = PSOM_SET_RAND_SEED(SEED)
%
% _________________________________________________________________________
% INPUTS:
%
% SEED
% (scalar, default sum(100*clock))) the seed of the random number
% generator. If SEED is a vector, it is replaced by sum(SEED).
%
% _________________________________________________________________________
% OUTPUTS:
%
% SEED
% (scalar) the seed of the random number generator.
%
% _________________________________________________________________________
% SEE ALSO:
% RAND, RANDN, RANDSTREAM
%
% _________________________________________________________________________
% COMMENTS:
%
% This function is, in general, simply equivalent to :
% >> rand('state',seed)
% >> randn('state',seed)
%
% The exact method however depends on the version of Matlab and/or
% Octave. Recent versions of Matlab use the RandStream mechanism instead.
%
% This function should work for every version and language.
%
% If the seed is empty, PSOM_SET_RAND_SEED does not do anything.
%
% Copyright (c) Pierre Bellec, Montreal Neurological Institute, 2008-2010.
% Centre de recherche de l'institut de Gériatrie de Montréal
% Département d'informatique et de recherche opérationnelle
% Université de Montréal, 2010-2014.
% Maintainer : [email protected]
% Patch submitted on 02/2014 by Cyril Pernet.
% See licensing information in the code.
% Keywords : random number generator, simulation
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
%
% The above copyright notice and this permission notice shall be included in
% all copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
% THE SOFTWARE.
if (nargin == 0)
seed = 100*clock;
end
if isempty(seed)
return
end
seed = sum(seed);
if exist('OCTAVE_VERSION','builtin')
rand('state',seed); % Octave
randn('state',seed); % Octave
else
try
try
RandStream.setGlobalStream(RandStream('mt19937ar','Seed',seed)); % matlab 8+
catch
RandStream.setDefaultStream(RandStream('mt19937ar','seed',seed)); % matlab 7.9+
end
catch
rand('state',seed); % Matlab 5+
randn('state',seed); % Matlab 5+
end
end