【发布时间】:2018-08-27 00:33:58
【问题描述】:
我想生成一个随机的实数(我猜是有理数)。
为此,我想使用runif(1, min = m, max = M),我的想法是将m; M(绝对)设置得尽可能大,以使间隔尽可能大。这让我想到了我的问题:
M <- .Machine$double.xmax
m <- -M
runif(1, m, M)
## which returns
[1] Inf
为什么不返回数字?选择的间隔是否太大?
附言
> .Machine$double.xmax
[1] 1.797693e+308
【问题讨论】:
-
有趣的问题。解决方法是
M * runif(1, -1, 1)。 -
这里是
runif的来源:github.com/wch/r-source/blob/…。看起来M是最大双精度数,而M - (-M)将大于最大双精度数,因此b - a将是Inf,这可以解释为什么a + (b - a) * u是Inf。
标签: r random precision uniform-distribution