Python中的全范围随机数

Python中的全范围随机数,python,numpy,random,range,Python,Numpy,Random,Range,我用这行代码生成了一系列随机浮动: random.random()*(maxval-minval) + minval 我用它来给一个给定的变量添加可变噪声,添加的噪声量取决于一系列因素。在某些情况下,噪声应该非常高,以至于在实践中原始值丢失,我有一个完全随机的值 在此上下文中,代码使用有限值,但如果使用“inf”,它将返回NaN。是否有一种变通方法来允许可能包含无穷大的连续随机范围?我不想篡改os.random(),因为它是特定于机器的。如果定义无限域上的均匀随机分布,则选择域中任何值的概率都

我用这行代码生成了一系列随机浮动:

random.random()*(maxval-minval) + minval
我用它来给一个给定的变量添加可变噪声,添加的噪声量取决于一系列因素。在某些情况下,噪声应该非常高,以至于在实践中原始值丢失,我有一个完全随机的值


在此上下文中,代码使用有限值,但如果使用“inf”,它将返回NaN。是否有一种变通方法来允许可能包含无穷大的连续随机范围?我不想篡改
os.random()
,因为它是特定于机器的。

如果定义无限域上的均匀随机分布,则选择域中任何值的概率都是无穷小的。你所要求的在数学上没有任何意义。

如果你在无限域上定义一个均匀的随机分布,被选择的域中任何值的概率都是无穷小的。你所要求的没有任何数学意义。

在评论中讨论之后,我建议如下:

>>> 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
之间的随机数。在评论中进行讨论后,我建议如下:

>>> 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

之间的随机数,正如@Asad所说的,您所尝试的在数学上不太合理。但你能做的是:

  • 定义一个非常大的数字(也许这篇文章有帮助:)

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


也许这就是你想要的。

正如@Asad所说,你所尝试的在数学上并不完全合理。但你能做的是:

  • 定义一个非常大的数字(也许这篇文章有帮助:)

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


也许这就是你想要的。

正如前面所说,你不能在整个实线上有均匀分布,但你可以使用其他具有实线支持的随机分布。考虑柯西分布。它有“重尾”,这仅仅意味着有相当大的概率得到非常大的数字。

正如前面所说,你不能在整个实线上有均匀分布,但你可以使用其他具有实线支持的随机分布。考虑柯西分布。它有“重尾”,这仅仅意味着有相当大的概率获得非常大的数字。

Python 2中的最小值是
-sys.maxint-1
,Python 2中的最小值是
-sys.maxint-1