Я хочу знать, как создавать одинаковые случайные (нормальное распределение) числа в numpy, как и в MATLAB.Достигайте одинаковых случайных чисел в numpy как matlab
В качестве примера, когда я делаю это в MATLAB
RandStream.setGlobalStream(RandStream('mt19937ar','seed',1));
rand
ans =
0.417022004702574
Теперь я могу воспроизвести это с NumPy:
import numpy as np
np.random.seed(1)
np.random.rand()
0.417022004702574
Что приятно, но когда я делаю это с нормальным распределением я получаю разные номера.
RandStream.setGlobalStream(RandStream('mt19937ar','seed',1));
randn
ans =
-0.649013765191241
И Numpy
import numpy as np
np.random.seed(1)
np.random.randn()
1.6243453636632417
Обе функции говорят в своей документации, что они черпают из стандартного нормального распределения, но дают мне разные результаты. Любая идея, как я могу настроить мой python/numpy, чтобы получить те же номера, что и MATLAB.
Потому что кто-то отметил это как дубликат: Речь идет о нормальном распространении, как я писал в начале и конце. Как я писал, равномерное распределение работает нормально, это касается нормального распределения. Ни один из ответов в связанной теме не помогает с нормальным распределением.
Одним из возможных хак, чтобы получить такие же нормальные образцы распределения могут быть генерировать образцы из однородного распределения, а затем преобразовать их в нормальное распределение: http://stackoverflow.com/questions/75677/converting-a-uniform-distribution-to-a-normal-distribution – Prakhar
См. также: http://stackoverflow.co m/questions/3722138/is-it-possible-to-reproduce-randn-of-matlab-with-numpy? rq = 1 (оно появилось в боковой панели «Related»; может также сделать его «связанным».) –