2016-05-24 2 views
0

В Matlab можно использовать rng('default'); для инициализации генератора случайных чисел.Инициализация генератора случайных чисел в Matlab

Выполняется ли это только для текущей функции или для всего сеанса?

Во-вторых, я хочу инициализировать генератор случайных чисел в определенной функции. Перед и после этой конкретной функции следует использовать не инициализированный генератор случайных чисел. Как это может быть сделано?

Редактировать: есть дополнительная проблема. Я хочу использовать функцию cvpartition, которая внутренне использует случайные числа, но я не могу передать объект RandStream функции. Как я могу использовать инициализированный генератор случайных чисел для функции cvpartition?

+2

Даниил ответил на ваш второй вопрос. Что касается первого вопроса, то «rng» использует глобальное состояние, как он упомянул, что означает, что везде, где вы используете «rng», если он находится в функции или снаружи в командной строке, как только вы вызываете ее с определенным семенем, это семя используется для всего сеанса. Дальнейшие вызовы функций 'rand *' будут использовать это семя независимо от того, где вызываются эти функции (т. Е. В локальной функции, командной строке и т. Д.). – rayryeng

ответ

3

Вместо этого используйте объект RandStream, он позволяет вам выбрать то, что вы хотите, например, создать один объект для каждой функции, которую вы используете.

rng всегда использует глобальное состояние.

+0

Возникла дополнительная проблема. Я хочу использовать функцию cvpartition, которая внутренне использует случайные числа, но я не могу передать объект RandStream функции. Как я могу использовать инициализированный генератор случайных чисел для функции cvpartition? – machinery

Смежные вопросы