‘RandStream’ не определен в MATLAB 7.6.0.324?

#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