gpt4 book ai didi

r - 从范围内生成整数随机数 (0 :10^12)

转载 作者:行者123 更新时间:2023-12-03 12:25:08 25 4
gpt4 key购买 nike

我想生成 0 到 10^12 之间的 10000 个整数随机数。
通常,代码如下所示:

x <- sample(0:1000000000000,10000,replace=T)

但我收到以下错误消息:
Error in 0:1000000000000 : result would be too long a vector

是否有一种内存效率更高的方法,不必为了获得大小为 10000 的样本而将 10^12 个整数放入向量中?
如果没有,有没有办法增加向量的最大大小?我正在使用具有 12GB 可用 RAM 的 64 位操作系统。

最佳答案

真正的问题在于您无法存储 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与没有小数的相同浮点数相比。

关于r - 从范围内生成整数随机数 (0 :10^12),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19835662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com