我目前正在尝试从统一分布中绘制浮动数字。
Numpy提供了numpy.random.uniform。
import numpy as np
sample = np.random.uniform (0, 1, size = (N,) + (2,) + (2,) * K)
但是,此模块会在半开区间[0,1]上生成值。
如何从均匀分布中用[0,1]绘制浮点数?
感谢。
答案 0 :(得分:4)
如果从(0,1)或[0,1]或[0,1)或(0,1)中绘制均匀分布的数字,则无关紧要。因为获得0或1的概率是零。
答案 1 :(得分:2)
来自标准Python random.uniform documentation:
根据等式a +(b-a)* random()中的浮点舍入,终点值b可能包含也可能不包含在范围内。
所以基本上,包含终点严格地基于所使用的浮点舍入方案。因此,要包含1.0,您需要定义操作所需的精度并相应地舍入随机数。如果您没有为问题定义精度,可以使用numpy.nextafter。它的用法由之前的answer覆盖。
答案 2 :(得分:2)
random_integers在封闭的时间间隔内生成整数。所以,如果你可以将你的实际问题改成使用整数,那么你就完全没有了。否则,您可以考虑1./MAX_INT的粒度是否足以解决您的问题。
答案 3 :(得分:0)
如果您的软件取决于[0,1)
和[0,1]
之间的差异,那么您应该推出自己的随机数生成器,可能是the one mentioned here,以确保它符合这些严格的要求。