numpy.random和python的
random工作方式不同,尽管正如您所说,它们使用相同的算法。
就种子而言
:可以使用from中的
set_stateand
get_state函数
numpy.random(在python中
random称为
getstate和
setstate),并将状态从一个传递到另一个。结构略有不同(在python中,
pos整数附加到状态元组中的最后一个元素)。请参阅numpy.random.get_state()和random.getstate()的文档:
import randomimport numpy as nprandom.seed(10)s1 = list(np.random.get_state())s2 = list(random.getstate())s1[1] = np.array(s2[1][:-1]).astype('int32')s1[2] = s2[1][-1]np.random.set_state(tuple(s1))print(np.random.random())print(random.random())>> 0.57140259468991350.5714025946899135
在效率方面 :这取决于您要执行的 *** 作,但是numpy通常更好,因为您可以创建元素数组而不需要循环:
%timeit np.random.random(10000)142 µs ± 391 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)%timeit [random.random() for i in range(10000)]1.48 ms ± 2.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
在“随机性”方面
,numpy(根据他们的文档)也更好:
注意:Python stdlib模块“ random”还包含Mersenne
Twister伪随机数生成器,其生成方法与中提供的方法类似RandomState。RandomState除了具有NumPy感知能力外,它还具有提供大量概率分布可供选择的优势。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)