gpt4 book ai didi

r - 如何将区间随机划分为不重叠、间隔相等长度的区间

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

我有一个区间,例如从 1 到 671。我想将其分为 5 个随机的非重叠容器,长度为 50,但间隔也最小为 51。

interval <- 1:671  (example, it does not need to be 671)

结果(这是一个示例,因为箱应该是随机的,但在定义的间隔内、相等的长度和间隔):

bin1 <- 3:52
bin2 <- 103:152
bin3 <- 209:258
bin4 <- 425:474
bin5 <- 610:659

我优先希望输出为数据帧(bin、startOfbin、endOfbin),但其他类型(例如列表)也可以。

我目前正在 R 中编写一个函数,该函数将在大量间隔内使用此采样,但我无法想出合理的解决方案。预先感谢您。

最佳答案

如果我正确理解你的问题,你需要间隔的 5 个部分,长度为 50,最小距离为 51。

所以你的随机性在于每个距离比 51 大多少。

这意味着您可以计算实际有多少空间可以分配。

intervalLength <- 671
nBins <- 5
binWidth <- 50
binMinDistance <- 51

spaceToDistribute <- intervalLength - (nBins * binWidth + (nBins - 1) * binMinDistance)

计算该值的随机分割

distances <- diff(floor(c(0, sort(runif(nBins))) * spaceToDistribute))

并构建您想要的 data.frame

startOfBin <- cumsum(distances) + (0:(nBins-1)) * 101
result <- data.frame(bin = 1:nBins, startOfBin = startOfBin, endOfBin = startOfBin + 49)

关于r - 如何将区间随机划分为不重叠、间隔相等长度的区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57889573/

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