#matlab #random #seed
#matlab #Случайный #начальный
Вопрос:
Я пытаюсь использовать RandStream
в MATLAB 7.6.0.324, как показано ниже:
randst = RandStream('mrg32k3a', 'Seed', 0);
По-видимому, RandStream
не определено в MATLAB 7.6.0.324, и я не могу найти документацию об этом.
Как я могу установить случайное начальное значение в этой версии Matlab тогда для rand
и randperm
.
Комментарии:
1. Я использую matlab версии 7.11.0.584 (R2010b). Я запустил опубликованный вами код без проблем. Можете ли вы указать конкретную ошибку??
2. «Неопределенная функция или метод ‘RandStream’ для входных аргументов типа ‘char'».
Ответ №1:
Скорее всего, вы получили код от кого-то, кто использует более новую версию MATLAB. RandStream
Функция была введена в более поздних версиях MATLAB (я не помню, в каких именно) и, как вы выяснили, не существует в версии 7.6.0324. В более старых версиях вы просто устанавливаете начальное значение внутри rand
вот так:
rand('seed',0);
x=rand(1,5)
x =
0.2190 0.0470 0.6789 0.6793 0.9347
randperm
с другой стороны, вызовы rand
внутри него. Таким образом, установка начального значения для rand
перед вызовом randperm
каждый раз будет выдавать один и тот же результат.
rand('seed',0);
y=randperm(5)
y =
2 1 3 4 5
ПРИМЕЧАНИЕ:
В настоящее время этот синтаксис не рекомендуется (и поддержка может быть прекращена в будущих выпусках). Из документации:
Эти синтаксисы rand и randn больше не рекомендуются по следующим причинам:
- Термины ‘начальное значение’ и ‘состояние’ вводят в заблуждение названия генераторов.
- Все предыдущие генераторы, кроме ‘twister’, имеют недостатки.
- Они без необходимости используют разные генераторы для rand и randn.
Комментарии:
1. @farzaneh:
randperm
это просто функция-оболочка, которая вызываетсяrand
внутри него. Так что, если вы это сделаетеrand('seed',0); randperm(10)
, вы будете получать одну и ту же перестановку каждый раз.
Ответ №2:
вы, очевидно, используете старую версию, где функция еще не была определена
попробуйте qrandstream