我希望生成一个随机实数(我猜测是有理数)。
为了做到这一点,我想使用runif(1, min = m, max = M)
,我的想法是尽可能将m; M
(绝对值)设置得大一些,以便让区间尽可能地大。这就带来了我的问题:
M <- .Machine$double.xmax
m <- -M
runif(1, m, M)
## which returns
[1] Inf
为什么它没有返回数字?所选的时间间隔是否太大了?
PS
> .Machine$double.xmax
[1] 1.797693e+308
M * runif(1, -1, 1)
。 - mt1022runif
函数的源代码:https://github.com/wch/r-source/blob/af7f52f70101960861e5d995d3a4bec010bc89e6/src/nmath/runif.c。看起来,`M`是最大的双精度浮点数,而`M - (-M)将大于最大的双精度浮点数,因此
b-a将会是无穷大,这可能解释了为什么
a + (b-a)*u`是无穷大。 - mt1022