我生成一系列使用這條線隨機浮子:全範圍內的隨機數在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