【发布时间】:2021-04-12 09:13:39
【问题描述】:
我想得到一个0到1e-20之间的随机数,我在Python中使用如下函数
random.uniform(1e0, 1e-20)
但是,数字仅来自 1e0,缺少范围的其余部分,例如 1e-12、1e-9 等。
如何在所有范围内得到一个数字?
更新:
0.8997498299014705
0.8320065922653802
0.9894039561126263
0.015205024292817781
0.8460417648041141
0.9744256248957714
0.10799180387896301
0.195940099219041
0.19830039605178706
0.694803475206833
0.5869371229317706
0.5762011063374192
0.2761909685255569
0.9757648088382384
0.0786057337977103
0.7090714156637489
0.6946835664286121
0.5975036696040513
0.7426259364954565
0.1116434886497456
0.6691228131282176
【问题讨论】:
-
这按预期工作,返回 1e-20 和 1 之间的数字。您期望什么不同的输出?请注意,输出小于 1e-12 的概率接近 1e-12,因此不要期望经常看到该量级的输出...
-
我已经用一些输出更新了帖子。您可以观察到值如何比 1e-20 更接近 1e0,我预计会有各种值“小数位置变化”
-
那么你不想要均匀分布。在这种情况下,您应该明确说明您想要获得哪种分布。
-
有无数种可能的随机分布(例如,参见一些非常常见的here)。您显然不想要一个统一的,但如果您不解释,我们无法猜测您希望如何分配随机数。
-
这正是均匀分布的本质,这正是你得到如此少非常小的值的原因,因为使它们均匀分布的概率当然非常低。因此,正如已经解释的那样,您显然不想要均匀分布,
cover all the range with the same probability的意思并不是“相同概率”在概率中的含义。所以,请解释一下你的确切意思。