Подтвердить что ты не робот

Одно и то же случайное семя в Matlab и R

Я генерирую данные в R и Matlab для двух отдельных анализов, и я хочу определить, эквивалентны ли результаты в двух системах. Между двумя наборами кода существует неотъемлемая изменчивость из-за генератора случайных чисел. Если возможно, я хотел бы удалить этот источник изменчивости. Кто-нибудь знает, как установить одинаковое начальное семя как в Matlab, так и в R? Я предоставляю демо-код ниже.

%Matlab code
seed=rng %save seed
matlabtime1=randn(1,5) %generate 5 random numbers from standard normal 
rng(seed) %get saved seed
matlabtime2=randn(1,5) %generates same output as matlabtime1

#R code
set.seed(3) #save seed
r.time1=rnorm(5) #generate 5 random numbers from standard normal 
set.seed(3) #get saved seed
r.time2=rnorm(5) #generates same output as r.time1

По сути, я хочу, чтобы результаты от matlabtime2 и r.time2 соответствовали точно. (Код, который я использую, более сложный, чем эта иллюстративная демонстрация, поэтому переписывание на одном языке не является действительно возможным вариантом.)

4b9b3361

Ответ 1

Мне трудно получить одинаковые случайные числа в R и MATLAB - даже используя одно и то же семя для одного и того же алгоритма (Mersenne Твистер).

Я предполагаю, что они реализованы - даже с одним и тем же семенем, у них разные начальные состояния (вы можете печатать и проверять состояния как в R, так и в MATLAB).

В прошлом, когда мне это нужно, я генерировал случайный ввод, сохранял его как файл на диске и подавал его как на MATLAB, так и на R.

Другой вариант - написать C-обертки для генератора случайных чисел (их много в C/С++) как для R, так и для MATLAB и вызывать их вместо встроенных.