- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一定数量,例如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)
}
关于r - 尽可能均匀地分配金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254452/
我需要在半径R的圆内生成一个均匀随机点。 我意识到,通过在区间 [0 ... 2π) 中选择均匀随机的角度,并在区间 (0 ... R) 中选择均匀随机的半径,我最终会得到更多的点朝向中心,因为对于两
我想在一个正方形内生成 N 个点(均匀地)。我怎样才能做到这一点? 最佳答案 非常酷的问题,比我想象的要困难得多,但这就是想法。有关于 n 边形的论文,但我只会做正方形。因此,圆的均匀分布是一个常见问
考虑以下示例: import itertools import numpy as np a = np.arange(0,5) b = np.arange(0,3) c = np.arange(0,7)
SQL Server 将一组值分成 5 组,每组的 sum(count) 应该均匀分布。 表仅包含 2 列 rid 和 count。 create table t1(rid int, count in
我有以下简单的 HTML。 A B C 和 CSS: ul { width: 100%; display: flex; flex-direction:
我是一名优秀的程序员,十分优秀!