我可以用下面的代码保存matlab随机数生成器的状态
seed = 10;
rng(seed, 'twister');
%... random functions that don't need to be reproduced%
s = rng;
s.Type
s.Seed
s.State
save('rand_state.mat', 's');
%... random functions that need to be reproduced%
如何将Mersenne Twister的 state 导入numpy,以便它在保存后生成相同的随机数?
仅仅使用np.random.RandomState(seed)
并没有考虑到twister的状态在保存之前被后续的随机调用修改过。
1条答案
按热度按时间lc8prwob1#
我拿到了!
RandomState有一个函数set_state(),它接受输入
state = ('MT19937', keys, pos)
唯一的问题是matlab将pos保存为State的最后一个元素。其余的都是set_state需要的键。
我学到了matlab和python使用不同的转换来将随机抽取从[0,1)转换为整数或正常变量。因此,如果需要在python中复制,则必须在matlab中为int和normal编写自定义函数。