我在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采样技术的修改,或者我不了解的另一种平衡/二维误差扩展方法,这将最大限度地减少许多“错误扩散”行中成员之间的整体错误。
我认为这是具有大量其他用途的挑战性问题之一,所以我希望天才们有一些好主意!
感谢您分享的任何见解:)
威尔
答案 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)