我生成一系列使用这条线随机浮子:全范围内的随机数在Python
random.random()*(maxval-minval) + minval
我使用它来可变噪声添加到给定的变量,并添加的噪声量取决于一系列因素。在某些情况下,噪声应该很高,以至于在实践中原始值会丢失,并且我有一个完全随机的值。
在这种情况下,代码工作与有限值,但如果我使用“inf”它返回NaN。是否有一种解决方法来允许可能包含无穷大的连续随机范围?我不想篡改os.random()
,因为它是特定于计算机的。
我生成一系列使用这条线随机浮子:全范围内的随机数在Python
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
之间的随机数。
如果你定义了一个在无限域上的均匀随机分布,那么被选择域中任何值的概率都是无穷小的。你所要求的没有任何数学意义。
正如@Asad所说的,你所尝试的在数学上不太合理。但是你可以做什么,如下:
定义一个非常大的数字(也许这篇文章可以帮助:What is the range of values a float can have in Python?)
使用random.uniform(0,biggestValue)为随机值的近似值根据你的需求。
也许这就是你要找的。
正如之前所说,你不能在整个实线上有均匀的分布,但你可以使用其他具有实线支持的随机分布。考虑柯西分布。它有'重尾',这只是意味着获得非常大的数字的可能性很大。
Python 2中的最小值是'-sys.maxint - 1',[source](https://docs.python.org/2/library/stdtypes.html#numeric-types-int-float-long -复杂)。 – Agostino