Bạn chỉ có thể gọi rng(mySeed)
để đặt hạt giống cho luồng toàn cầu (được thử nghiệm trong Matlab R2011b). Điều này ảnh hưởng đến các chức năng rand
, randn
và randi
.
same page that James linked to liệt kê đây là phương án thay thế được đề xuất cho các phương pháp cũ khác nhau (xem ô giữa của cột bên phải của bảng).
Dưới đây là một số mã ví dụ:
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]));
đầu ra của nó là:
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
Không, điều đó không lạ. Nó thực sự khá quan trọng để thử nghiệm và gỡ lỗi. – Jonas
@ Jonas, yup, đặc biệt là khi nói đến độ lặp lại của kết quả ... – Gacek
Lưu ý rằng để làm điều ngược lại, tức là để tránh lặp lại mỗi khi chúng ta khởi động lại Matlab, lệnh là ['rng ('shuffle')'] (http://mathworks.com/help/matlab/ref/rng.html), đặt hạt giống dựa trên thời gian hiện tại. –