尽可能均匀地分配数量

2023-12-13

我们有一定的数量,例如300 单位。该数量应尽可能均匀地分布在 40 个“槽”上。如果每个槽都相同,那就很容易了 - 所以每个槽都是 7.5。然而,插槽的大小各不相同,我们不能“填充”超过其“大小”允许的范围,例如如果只有 5 个。我们无法“填写”的部分,我们必须在其他部分上分配更多。

我有一些基本的想法,但我距离专家还很远,希望有一种简单的方法来解决这个问题。 作为一个例子,这可能是什么样子的。在数组“a”中,值代表插槽可以采用的最大值。 a[i] 是第 i 个槽的最大值。 “b”是我们必须总体分配的内容,例如300.

 # developing slots and their "size"
 a <- rnorm(40,10,4)
 sum(a)

 # overall sum to distribute
 b <- 300 

也许可以按升序对值进行排序,然后可以通过双 for 循环使用它。 a[2] 成为“填写”金额的列。

 for i in 1:40
 {a[i,2] <- a[1,2]*40
 b <- a [1,2]*40}

 for i in 2:40
 {a[i,2] <- a[1,2]*39
 b <- a[1,2]*39}

etc.

我不确定如何将两个 for 循环放在一起,以及这是否是一个足够的解决方案。 很高兴听到你的想法。谢谢!


第一个版本,使用 while 循环:

optimal.fill <- function(a, b) {
  stopifnot(sum(a) >= b)

  d <- rep(0, length(a))
  while(b > 0) {
    has.room  <- a > 0
    num.slots <- sum(has.room)
    min.size  <- min(a[has.room])
    add.size  <- min(b / num.slots, min.size)
    d[has.room] <- d[has.room] + add.size
    a[has.room] <- a[has.room] - add.size
    b <- b - num.slots * add.size
  }
  return(d)
}

第二个版本有点难以理解,但我觉得更优雅:

optimal.fill <- function(a, b) {
  stopifnot(sum(a) >= b)

  slot.order   <- order(a)
  sorted.sizes <- a[slot.order]
  can.fill     <- sorted.sizes * rev(seq_along(a))
  full.slots   <- slot.order[which(cumsum(can.fill) <= b)]

  d <- rep(0, length(a))
  d[ full.slots] <- a[full.slots]
  d[!full.slots] <- (b - sum(a[full.slots])) /
                    (length(a) - length(full.slots))

  return(d)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尽可能均匀地分配数量 的相关文章

  • 将多个对齐的绘图放置在一页上时避免浪费空间

    我想将四个图放在一个页面上 轴标签应仅打印在最边缘 即x仅用于底部图表的轴标签 以及y仅左图的轴标签 这既适用于整个轴的名称 也适用于各个刻度线 我可以使用以下代码生成一些内容 pdf file ExampleOutput pdf widt
  • R 提交到 CRAN:构建包的 R 版本?

    我想向 CRAN 提交一个包裹 在里面CRAN 存储库政策 http cran r project org web packages policies html它指出 当发布新的 R x y 0 版本时 R CMD 检查给出 错误 的包将被
  • 如何从闪亮模块调用闪亮模块?

    如何从闪亮模块中调用闪亮模块并传递第一个模块中的选择 作为一个例子 我编写了一个应用程序来显示星球大战主题dplyr在 DT data 表中 模块StarWars 来自同一数据集的相关电影应显示在另一个子选项卡 模块电影 的另一个 DT d
  • Rstudio 更有意义的窗口标题

    我在 Ubuntu 16 04 下使用 R studio 版本 1 0 143 窗口标题仅显示一个非常无信息的 RStudio 我希望至少有当前选项卡的名称 或者最好是与此选项卡对应的文件的完整路径 在 Windows 下 完整路径似乎出现
  • 在for循环中重命名ggplot2图

    我有一个关于在 for 循环中创建 ggplot2 图表 根据迭代重命名它们 然后在网格中排列图表的问题 我想做类似这个虚拟示例的事情 library ggplot2 a c 1 2 3 b c 4 5 6 for i in c 1 5 x
  • R:data.table 与 merge(aggregate()) 性能

    或者更一般地说 它是DT SD by versus merge aggregate 话不多说 这里是数据和示例 set seed 5141 size 1e6 df lt data table a rnorm size b paste0 sa
  • rpy2 在从 R 到 Python 的数据帧中处理 NA/缺失值时出现问题

    我在使用rpy2包进行转换时遇到问题dataframe将 R 中的内容保存到 Python 中 import os os environ R HOME Library Frameworks R framework Resources imp
  • 在 R 中使用 randomforest() 进行分类?

    我最初有一个由 N 行 12 列组成的数据框 最后一列是我的班级 0 或 1 我必须将整个数据框转换为数字 training lt sapply training temp as numeric 但后来我认为我需要将类列作为因子列来使用 r
  • 在 ggplot2 中,如何将堆叠直方图中的小值条形组合在一起?

    示例数据 tmp df lt data frame a rnorm 100 0 1 b rnorm 100 0 5 1 c rnorm 100 0 5 1 d rnorm 100 1 1 e rnorm 100 1 1 gt tidyr g
  • RStudio 在临时目录中从 Rmarkdown 创建 PDF 文件

    我使用 RStudio 和 Rmarkdown 来创建报告 由于某种原因 使用 Knit 按钮会导致它仅在某个临时目录中创建 从命令输出来看 似乎 pandoc 本身被指示这样做 我觉得这很奇怪 usr lib rstudio bin pa
  • 如何减小 R Plot 中图例的大小,同时仍使其可读?

    我试图用 R 中的两个 y 轴绘制多年来的一些数据 但是 每当我尝试包含图例时 图例就会主导我的绘图 当我使用其他地方建议的解决方案时 例如keyword和 或使用cex论据 在另一篇文章中建议here https stackoverflo
  • 计算级别内的值

    我在 R 中生成了一组级别cut 例如假设 0 到 1 之间的小数值 分为 0 1 个区间 gt frac lt cut c 0 1 breaks 10 gt levels frac 1 0 001 0 1 0 1 0 2 0 2 0 3
  • 在 mts 对象上使用 Apply 系列函数

    在 mts 对象上使用 apply 或 sapply 会在发送到函数时删除其时间序列属性 我应该如何在 mts 对象中的每个时间序列上应用相同的函数 带有 ts 输入和 ts 输出 并返回它 最好是 mts 我的意思是除了使用 for 循环
  • 返回带有参数的函数的函数

    创建一个应返回包含原始函数参数的函数时 我应该如何处理 例如考虑这个函数 a lt function value function x x value 我希望它返回我在结果函数的参数中指定的值 如下所示 b lt a 3 gt b gt f
  • 根据值的运行总计创建组

    我的数据在一个变量 Y 上是唯一的 另一个变量 Z 告诉我每个 Y 中有多少人 我的问题是我想从这些 Y 和 Z 创建 45 人的组 我的意思是 每当运行总计Z 达到 45 创建一组 然后代码继续创建下一组 我的数据看起来像这样 ID X
  • 在 for 循环中绘制的多个 ggplot2 绘图的网格

    作为一个新的 ggplot2 用户 我对可能性的数量感到有点迷失 并且很难在网上找到我认为简单问题的简单答案 我想在同一张纸上显示 ggplot2 的多个图 但知道这些图来自 for 循环 以下示例无法编译 仅用于说明 for i in c
  • 包检查时如何有效处理未压缩的保存?

    在最近开发一个包的过程中 我将数据集包含在data 我的包的文件夹 在我的具体情况下 我有 5 个数据集 所有这些数据集都位于data table格式 尽管我在下面描述的问题仍然存在 如果我将它们保留为data frame 我已将每个人单独
  • 解释 survreg 中的威布尔参数

    我正在尝试使用从 R 中的 survreg 估计的参数生成逆威布尔分布 我的意思是 对于给定的概率 这将是在 MS Excel 中实现的小型模拟模型中的随机数 返回使用我的参数预计出现故障 的时间 我理解逆威布尔分布的一般形式是 X b l
  • 通过 RSelenium 单击按钮

    我正在尝试使用 Rselarium 和 Rvest 来抓取 REI 的评论 吊床 我想点击底部的按钮 x 次 这样我就可以抓取所有评论 我有点失落 这是我到目前为止所拥有的 如果您也知道如何在取景器中预览您正在做的事情 而不是屏幕打印 那就
  • R 条形图中的 X 轴

    我想问一个关于 barplot 轴的问题 首先请看我的数据 SerNo DOY Rain 1 350 0 2 351 0 3 352 0 4 353 0 5 354 0 6 355 0 7 356 0 8 357 0 9 358 0 10

随机推荐

  • 删除项目后 hasMany 关联列表中为空

    有域对象 class Book List
  • BoxAndWhiskerChart JFreeChart 的绘图方向

    我有一个问题JFreeChart 可以改吗PlotOrientation of a BoxAndWhiskerChart水平 我有一个直方图 我想添加一个BoxAndWhiskerChart以下 我需要它水平 这样我就可以使用相同的轴刻度
  • 如何使用参数化接口?

    我正在努力理解界面 起初 它们看起来很简单 但是一旦我开始使用参数化接口 我就无法让各个部分就位 我有这个界面 interface my if parameter H WIDTH 64 parameter L WIDTH 8 logic H
  • VSTS 嵌套变量

    我正在尝试实现一个级联变量 当设置一个设计时变量时 它会级联到其他变量 这可能吗 我尝试过使用点表示法 尝试过不使用点表示法 并且尝试在任务中执行此操作 我也尝试过这个任务插件 但我的代理使用的是 2 0 并且任务无法运行 变量工具箱任务
  • 从代码隐藏文件中检查 CheckBoxField

    看来 CheckBoxField 不接受 ID 属性 因此我无法直接调用代码隐藏文件中的组件
  • Web 应用程序如何向 iOS 设备发送推送通知? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在开发一个网络应用程序 当有新内容时 如何向 iOS 用户发送推送通知 更具体地说 为了让 Web 应用程序向移动设备 例如 iPhone 发送推送通知 移动设备必须已注册才
  • 使用多处理时 Python 实例变量未更新

    我在更新变量方面遇到了一个不寻常的问题 我构建了一个简单的类对象来帮助我进行一些网络嗅探 我想要创建一个并行进程 它允许我运行一些网络测试并捕获使用 python 生成的流量 这样我就可以扩展程序来完成令人惊奇的事情 我正在使用 scapy
  • 如何使用外部 api 访问令牌而不将其暴露给用户?

    很抱歉 如果这可能是一个微不足道的问题 但我想确定一下 但无法在网上找到明确的答案 我正在编写一个使用 Mapbox 的小应用程序 并且我正在使用反应地图GL为了它 他们需要客户端的访问令牌 因此他们建议使用环境变量 我的问题是 是否可以简
  • 围绕轮廓对象生成颜色直方图

    嘿 OpenCV Emgu 大师们 我有一张正在为其生成轮廓的图像 请参见下文 我正在尝试生成基于颜色直方图的图像搜索空间修剪以查找 如何使蒙版仅围绕突出的物体轮廓并遮挡其余部分 所以我有一个由两部分组成的问题 如何 反转 轮廓外的图像 漫
  • 如何使用 Python 创建一个流式传输在线广播的 Discord 机器人

    正如标题所提到的 我该怎么做呢 到目前为止 我花了几个小时试图找到答案 但由于这不是一个受欢迎的请求 因此没有任何相关内容 我发现的大部分内容只是使用 youtube dl 下载 yt 音频并播放它 编辑 更新以使用FFmpegPCM音频流
  • 从文件中解析逗号分隔的 JSON

    我正在读取一个包含用逗号分隔的 JSON 的文件 例如 JSON JSON JSON 我确定它们是用逗号分隔的 但不确定它们是用换行符分隔的 该 JSON 可能全部位于一行 但可以肯定的是它们是用逗号分隔的 我还没有收到该数据 我想知道如何
  • 当数组包含日期时,从 Firestore 中删除数组项不起作用

    我花了几天时间研究这个问题 包括各种答案 例如 Firebase Firestore 从文档数组中追加 删除项目以及我之前的问题 从 Firestore 中删除数组项但无法弄清楚如何真正使其发挥作用 事实证明 问题在于对象中存在日期属性 如
  • WPF - ItemTemplate 未按预期运行

    我有一个UserControl我用它来显示列表UIElement是 该控制由一个单一的ItemsControl与它的ItemPanelTemplate切换为水平StackPanel its ItemsSource绑定到一个Dependenc
  • 插入表变量 CTE

    如何将 cte 的结果插入到表变量中 像这样的东西吗 DECLARE myData TABLE Title nvarchar 350 NOT NULL Id int NOT NULL INSERT INTO myData with CTE
  • 在所有窗口之上运行 hta

    我有一个 HTML 应用程序 我想保留在所有窗口的顶部 也就是说 如果打开 切换到另一个窗口 我希望这个窗口覆盖它 JavaScript 解决方案在 Windows 7 IE9 模式下不起作用 不确定是什么阻碍了它 也无法更改 而 VBSc
  • 没有表的映射关联的 Hibernate 标准投影

    我有 2 张桌子说 表1和表2 现在 Table1 有 3 列 即 t1 t2 t3 Table2 有 2 列 t4 和t5 我必须通过联接从两个表中获取数据 但注释或 xml 中的两个表之间没有映射关联 现在的主要问题是我必须使用休眠投影
  • 在 Visual Studio 2017 .NET Core 项目中支持 Roslyn 分析器(.ruleset)

    如何在 Visual Studio 2017 NET Core 项目中添加对 Roslyn 分析器 ruleset 的支持 在 project json 中 它是通过使用配置的buildOptions buildOptions additi
  • Varchar 或 Text 数据类型,字符串长度最多为数千个字符

    我有一个小型社交网站 包含帖子和评论 我决定让用户使用他们想要的任意数量的字符创建帖子 我认为存储此类内容的最佳数据类型是Text 但对于评论 大多数情况下用户只写一行或几行文字 这就是为什么我认为我必须将注释字符串长度限制为最大 3000
  • 从 C# 关闭最小化/图标化进程

    这是我的问题 我需要从 C 程序关闭一个已经运行的进程 问题是该进程现在作为图标运行 最小化到任务栏 除非用户至少打开它一次 这在无人值守的计算机上永远不会发生 否则它永远不会 有一个主窗口 我的另一个要求是应用程序是closed not
  • 尽可能均匀地分配数量

    我们有一定的数量 例如300 单位 该数量应尽可能均匀地分布在 40 个 槽 上 如果每个槽都相同 那就很容易了 所以每个槽都是 7 5 然而 插槽的大小各不相同 我们不能 填充 超过其 大小 允许的范围 例如如果只有 5 个 我们无法 填