如何生成0-1范围内的numpy.float128类型随机数组?
直接生成numpy.float128类型随机数组的方法
方法1:使用numpy推荐的新随机数生成器(numpy 1.17+)
numpy从1.17版本开始推荐使用np.random.Generator接口,它的uniform方法支持直接指定目标数据类型,能直接生成0到1范围内的float128数组,不会经过64位浮点转换:
import numpy as np # 初始化随机数生成器 rng = np.random.default_rng() # 直接生成100个0-1之间的float128随机数 a = rng.uniform(low=0.0, high=1.0, size=100, dtype=np.float128)
方法2:使用旧版接口的np.random.uniform
如果你仍在使用旧版numpy,也可以直接用np.random.uniform,它同样支持dtype参数:
import numpy as np a = np.random.uniform(0.0, 1.0, size=100, dtype=np.float128)
为什么np.random.random不行?
np.random.random本质是np.random.uniform的简化版,但它的参数设计里没有预留dtype参数,只能先生成默认的64位浮点数再转换,这就是你之前遇到精度问题的原因。
内容的提问来源于stack exchange,提问作者Simd
相关产品推荐
相关产品推荐

