我想生成我選擇調用「任意」正浮點數的東西;即與尺度無關的隨機數(換句話說,對數均勻分佈的數)。我不是一個數學家,所以我知道我可能會有另一個名字。如何生成與規模無關的隨機浮點數?
這是我最初的,天真的解決方案:
import sys
import random
def arbitrary(min=sys.float_info.min_10_exp, max=sys.float_info.max_10_exp):
return 10 ** random.uniform(min, max)
這讓我覺得,這可能是不理想的:一兩件事,我想有可能是random.uniform()
有限的精度和浮點之間的相互作用代表本身會導致更高數量級的預期產出的聚集和差距。
有沒有更好的方法? 只需生成一串隨機位,然後將其轉換爲它們表示的浮點數就更合理了嗎?
編輯:正如評論所指出的奧利查爾斯沃思,「隨機位轉換爲浮動」的想法並沒有做我想做的(這是日誌的均勻分佈(N))。
後一種方法將不起作用; PDF將是分段平坦的,在每次冪爲2時採用一步。 –