真正的问题在于您无法将序列存储0:10^12
到内存中。通过将 0 和 10^12 定义为均匀分布的边界,您可以获得您所寻求的:
runif(10000, 0, 10^12)
[1] 136086417828 280099797063 747063538991 250189170474 589044594904
[6] 65385828028 361086657969 186271687970 338900779840 649082854623 ........
这将来自均匀分布(有替换,尽管我怀疑这很重要)。
但是,您看不到的是这些实际上是浮点数。
您可以使用ceiling
它们来四舍五入:
samp = runif(1, 0, 10^12)
samp
[1] 19199806033
samp == 19199806033
[1] FALSE
ceiling(samp) == 19199806033
[1] TRUE
所以完整的代码是:
ceiling(runif(10000, 0, 10^12))
进一步吹毛求疵:
请注意,这在技术上不允许 0 存在(因为 0.0001 将被四舍五入),所以你可以从
ceiling(runif(10000, -1, 10^12))
正如Carl Witthoft所提到的,不适合整数大小的数字显然不是整数,因此您不能指望这些数字是整数。TRUE
不过,与没有小数的相同浮点数相比,您仍然可以依靠它们进行评估。