如何使用numpy生成[0, 0.0001]范围内的随机浮点数?
生成0~0.0001区间随机浮点数的正确方法
报错原因分析
- 第一次报错:
numpy.random.random()仅接受1个可选参数size(用于指定输出数组的形状),不支持直接传入上下限参数,因此传入2个参数触发类型错误 - 第二次报错:
size参数要求输入整数/整数元组,你传入了浮点数0.0001,无法被解析为合法的尺寸参数,因此报错
正确实现方案
方法1:基于random.random()缩放实现
random.random()默认生成[0.0, 1.0)区间的浮点数,直接乘以区间上限即可缩放到目标范围:
from numpy import random # 生成单个随机数 rand_val = random.random() * 0.0001 # 生成5个随机数组成的数组 rand_arr = random.random(5) * 0.0001
方法2:使用random.uniform()直接指定上下限
random.uniform()专门用于生成指定区间的均匀分布随机数,直接传入上下限即可:
from numpy import random # 生成单个[0, 0.0001)区间的随机数 rand_val = random.uniform(low=0, high=0.0001) # 生成shape为(3,2)的随机数组 rand_arr = random.uniform(low=0, high=0.0001, size=(3,2))
以上两种方法默认生成的是左闭右开
[0, 0.0001)区间的随机数,如果需要完全闭区间[0, 0.0001],可以将上限调整为0.0001 + 1e-12(极小偏移量,受浮点数精度限制几乎不会影响业务结果)。
内容的提问来源于stack exchange,提问作者Esalah
相关产品推荐
相关产品推荐

