我需要从13个不同的时间间隔生成13个数字,这些数字将加起来为1360.在下面的图表中," index"表示13个不同数字的索引。平均值表示间隔的平均值(平均值)。范围将是平均值的正负15%,如下所示。 我更倾向于根据N的正态分布生成随机数(平均值,平均值的7.5%)。我将其取回。没有正常分布。请使用+ - 15%作为间隔的硬限制。
如果有人能想出如何在excel中做到这一点会很棒。算法也将受到赞赏。
total
equal : (a: Nat) -> (b: Nat) -> Maybe ((a == b) = True)
equal Z Z = Just Refl
equal (S l) (S r) = equal l r
equal _ _ = Nothing
答案 0 :(得分:0)
获取这样的随机数
num = Int ((300 - 200 + 1) * Rnd + 200) //between 200 and 300
Click here for more information
并且随机数需要是总和减去你已经得到的总和,最后一个将是剩下的。
例如:(如果我们有4个数字总计为100)
A is a random number between 0 to 100 //lets say 42
then B is a random number between 0 to (100-42) => 0 to 78 //lets say 18
then C is a random number between 0 to (100-42-18) => 0 to 40 //lets say 25
then, in the end D is 100-42-18-25 => D is 15
*100-42-18-25 is the same as 100-Sum(A,B,C)
答案 1 :(得分:0)
这是我的示例基于低和高生成随机数。
column F
中的公式只是RANDBETWEEN
:
=RANDBETWEEN($D2,$E2)
然后,您可以使用以下column G
的公式得到结果总是等于1360:
=F2/SUM($F$2:$F$14)*1360
所以cell G15
总是1360,这是所有这13个区间的总和。
答案 2 :(得分:0)
我会通过增加平均值对表格进行排序:
并使用列作为辅助值(上面的列H)。
我们的想法是在进入下一行时保持目前与最终目标完美目标的偏差。完美意味着每个随机值都与该行的平均值一致。如果值比平均值小2,则该2将出现在下一行的H列中。为该下一行生成的随机数将不针对给定的平均值,但是比平均值小2。随机数的范围将适当减少,以便永远不会超过低值/高值。
通过首先对行进行排序,我们可以确定此校正均值将始终位于下一行的低/高范围内,因此始终可以在那里生成可接受的随机数。
最终值将以不同方式计算:它将是实现目标总和所需的余数。出于与上述相同的原因,该值保证在低/高范围内。
使用的公式如下:
| F | H
--+--------------------------------------------------+------------------------------
2 | =RANDBETWEEN(D2, E2) |
3 | =RANDBETWEEN(B3+H3-C3+ABS(H3), B3+H3+C3-ABS(H3)) | =SUM($B$2:$B2)-SUM($F$2:$F2)
4 | (copy above formula) | (copy above formula)
...| ... | ...
13 | (copy above formula) | (copy above formula)
14 | =SUM($B$2:$B14)-SUM($F$2:$F13) |
理论上,行首先不需要需要,但是公式不能像上面那样被复制,但必须引用正确的行。这会让它变得非常复杂。
如果绝对有必要按索引列(A,B,C ...)的顺序显示行,则使用另一张表格执行上述操作。然后在主工作表中使用另一个工作表中的VLOOKUP将值读入F列。所以在F2你会有:
=VLOOKUP(A2, OtherSheet!$A$2:$F$14, 6, 0)