我想使用numpy从开放范围(0,5)的连续均匀分布中提取一个随机值。我的目光落在了numpy.random.uniform(0,5)上。然而,根据文档和一些帖子,这包括封闭区间0,5或半开放区间[0,5]。
我已经看了很多帖子,到目前为止还没有找到好的答案。到目前为止,答案包括:你不需要使用完全开放的范围,因为绘制开始和结束值几乎是不可能的(仅在理论上),或者关于它实际上是半开放还是完全封闭存在争议。到目前为止,我想到的最好的解决方案是:
import numpy as np
rn = np.random.uniform(sys.float_info.epsilon, 5-sys.float_info.epsilon)
print(rn)
或者使用numpy的next_after:
import numpy as np
rn = np.random.uniform(np.nextafter(0,1), np.nextafter(5,0))
print(rn)
显然,如果我没有一个非常好的理由(在理论上)从一个完全开放的范围内进行绘制,我就不会打扰每个人。我真的很欣赏这样的想法,即我如何合理地论证我是从完全开放的区间(0,5)上的连续均匀分布中提取一个随机值。
提前感谢!
发布于 2020-02-12 17:23:06
如果检查rn == 0
并拒绝它呢?
rn = np.random.uniform(5)
while rn == 0.0:
rn = np.random.uniform(5)
https://stackoverflow.com/questions/60193673
复制相似问题