工作中,遇到需要使用随机抽样的业务类型,然后就遇到了numpy.random和python自带的random包,查找了下二者本质上的区别,在此记录下。
总的来说,两个包本质上就是没有区别!我是在stackoverflow上面找到的,贴出来源:
大致意思就是说,两个库没啥本质区别了,都是使用Mersenne twister sequence 来生成它们的随机数,并且它们都是完全确定性的。也就是说,如果知道几个关键的信息位,则可以绝对确定地预测下一个要出现的数字。因此,两者都不合适对于任何严重的加密用途(Crypto.Random或许可以满足你的需求)。但是因为序列非常长,在日常程序中生成随机数都很好。如果你每次都在同一个地方开始(设置种子数),你总是会得到相同的序列的随机数。
所以说,大家平时也就不用纠结使用哪个库来选择随机数了。不过numpy通常会有更丰富的函数选择,科学计算更合适。random.random就比较轻量级了。