È possibile chiamare semplicemente rng(mySeed)
per impostare il seme per lo stream globale (testato in Matlab R2011b). Questo riguarda le funzioni rand
, randn
e randi
.
Lo same page that James linked to lo elenca come alternativa consigliata a vari metodi precedenti (vedere la cella centrale della colonna destra della tabella).
Ecco qualche esempio di codice:
format long; % Display numbers with full precision
format compact; % Get rid of blank lines between output
mySeed = 10;
rng(mySeed); % Set the seed
disp(rand([1,3]));
disp(randi(10,[1,10]));
disp(randn([1,3]));
disp(' ');
rng(mySeed); % Set the seed again to duplicate the results
disp(rand([1,3]));
disp(randi(10,[1,10]));
disp(randn([1,3]));
La sua uscita è:
0.771320643266746 0.020751949359402 0.633648234926275
8 5 3 2 8 2 1 7 10 1
0.060379730526407 0.622213879877005 0.109700311365407
0.771320643266746 0.020751949359402 0.633648234926275
8 5 3 2 8 2 1 7 10 1
0.060379730526407 0.622213879877005 0.109700311365407
No, non è strano. In realtà è abbastanza importante per il test e il debug. – Jonas
@Jonas, sì, specialmente quando si tratta di ripetibilità dei risultati ... – Gacek
Nota che per fare il contrario, cioè per evitare ripetibilità ogni volta che riavviamo Matlab, il comando è ['rng ('shuffle')'] (http://mathworks.com/help/matlab/ref/rng.html), che imposta il seme in base all'ora corrente. –