在Python全范围的随机数(Full-range random number in Python)

2019-10-23 00:58发布

我产生了一系列使用该行随机浮动的:

random.random()*(maxval-minval) + minval

我用它来可变噪声添加到给定的变量,并添加噪声的量取决于一系列因素。 在某些情况下,噪声应如此之高,在实践中,原始值丢失了,我有一个完全随机的值。

在此背景下,该代码与有限值的作品,但如果我用“INF”,它返回NaN。 有一种解决方法,使一个连续的随机范围可能包括无限? 我不想乱动os.random()因为它是机器特有的。

Answer 1:

在意见讨论后,我建议如下:

>>> m=sys.maxint
>>> np.random.uniform(-m,m,5)
array([ -5.32362215e+18,  -2.90131323e+18,   5.14492175e+18,
        -5.64238742e+18,  -3.49640768e+18])

正如说,你可以得到最大整数sys.maxint那么你可以使用np.random.randint获得之间的随机数maxint-maxint



Answer 2:

如果定义在一个无限域均匀随机分布,被选择的任何值的域中的概率是极小的。 什么你问不作任何数学意义。



Answer 3:

由于这是之前说的,你不能在整个实线均匀分布,但你可以使用具有实时在线支持其他随机分布。 考虑柯西分布。 它具有“重尾”,它只是意味着有获得非常大的数字的体面概率。



Answer 4:

作为@Asad说,你正在尝试在数学上是不是很健全。 但是你可以做什么,如下:

  • 定义一个非常大的数字(也许这篇文章可以帮助: 什么是值的浮动可以在Python的范围是多少? )

  • 根据需要使用random.uniform(0,biggestValue)作为随机值的近似值。

也许这是你在找什么。



文章来源: Full-range random number in Python