如何在Excel中实现“平衡”错误传播功能?

时间:2013-06-07 22:06:58

标签: excel random excel-formula

我在Excel中要求传播小;也就是说,在我俱乐部的成员中,便士,舍入错误。

当我从会员中扣除款项时出现错误;例如21英镑之间的30英镑是1.428571英镑......需要从每位会员中扣除1.43英镑,总计30.03英镑才能达到30英镑的目标。

我想采取的方法,继续上面的例子,是从每个成员中扣除1.42英镑,总计29.82英镑,然后使用错误传播技术扣除剩余的0.18英镑,随机从18中扣除额外的一分钱21名成员。

这让我想起了水库采样,我在这里使用了这些信息:Random selection,  在这里构建测试Excel电子表格:https://www.dropbox.com/s/snbkldt6e8qkcco/ErrorSpreading.xls,在Dropbox上,供你们玩...

我遇到的问题是,此电子表格的每一行都会独立计算每一行的错误分布,这会导致某些成员的贡献超过其额外便士的公平份额。

我正在寻找的是对Resevoir采样技术的修改,或者我不了解的另一种平衡/二维误差扩展方法,这将最大限度地减少许多“错误扩散”行中成员之间的整体错误。

我认为这是具有大量其他用途的挑战性问题之一,所以我希望天才们有一些好主意!

感谢您分享的任何见解:)

威尔

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。不是很优雅,通过。 你必须使用两个矩阵。在第一个中,您获得完全随机数,使用= RANDOM()选择,在第二个中选择n更大的值 假设在F30中你有第一个

  

= RANDOM()

细胞。 (我已经试过你的表。)

只需在A列中复制n列(在表8中) 在单元格F52中,您输入:

  

= IF(RANK(F30,$ F30:$ Z30)< = $ A52,1,0)

到目前为止,如果你左右拖动公式,你的情况与你的表格相同(只是不那么优雅和效率)。

但从第二行随机数开始,你可以补偿所支付的一分钱。

在单元格F31中,您输入:

  

= RANDOM() - SUM(F $ 52:F52)* 0.5

(注意$,每个随机数应根据已经花费的便士进行修正。) 如果$是好的,你应该可以左右拖动公式。您还可以参数化0.5并尝试其他值。对于0.5,我有1到2之间的误差因子(相当于你的单元格AB24)