2013-11-23 1 views
1

Действительно ли запуск параллельного инструментария приводит к тому, что генераторы случайных чисел создают одинаковые случайные числа?Получает ли Matlab одинаковые номера случайных чисел каждый раз, когда используется параллельная панель инструментов.

Кажется, что у меня такие же результаты, даже если я фактически не использую парфор? т. е. я открываю пул matlab, но в любом случае использую его.

Затем, когда я повторно запускаю результаты, они могут быть разными, даже если я снова заново запустил пул Matlab?

Баз

+0

Код, объясняющий, что вы делаете (в том числе, как вы установили свое семя), сделает ваш вопрос более ясным? И при запуске параллельного инструментария я предполагаю, что вы имеете в виду 'matlabpool open'? – horchler

+0

Да, я использую пул матлаба открытым, однако, невзирая на пример, программа разбивается на несколько М-файлов. – Bazman

+2

Нам не нужно видеть ваш исходный код, что-то, что демонстрирует одно и то же. Возможно, создайте небольшой тестовый сценарий, чтобы самому исследовать проблему и помочь нам точно понять, что вы просите. – horchler

ответ

1

сам MATLAB всегда инициализирует свои генераторы случайных чисел точно так же, как каждый раз, когда вы запускаете его. Это позволит вам воспроизводить результаты, если вам нужно. Например, в R2013b, как на WIN64, так и на GLNXA64, самый первый возврат от rand() равен 0.8147....

Аналогичным образом, сотрудники Parallel Computing Toolbox также имеют детерминированную инициализацию случайных чисел. Итак, мы видим следующее (в R2013b, используя новый синтаксис parpool)

>> parpool('local', 3); spmd, rand, end 
Starting parallel pool (parpool) using the 'local' profile ... connected to 3 workers. 
Lab 1: 
    ans = 
     0.3246 
Lab 2: 
    ans = 
     0.2646 
Lab 3: 
    ans = 
     0.8847 

Там, более подробная информация (в том числе сведения о gpuArray случайных чисел) in the doc.

Существует также потенциально полезная информация в this c.s-s.m thread.

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