在C中快速添加随机变量
简短版本:如何最有效地代表和添加由他们的实现列表给出的两个随机变量?
温和的版本: 问题是:如果我使用这种愚蠢的算法对A的每个实现求和,每个实现B,复杂度在COUNT中是指数的.因此,对于每个r.v.由三个值给出,COUNT = 720的计算量为3 ^ 720?3.36xe ^ 343,这将持续到我们的日子结束计算:)更不用说在现实生活中,每个r.v.的长度.将会是5000. 解决方案: 为了具有较短的阵列,可以使用hashmap,这很可能减少AB中涉及的操作数(数组访问),因为假设理论跨度的一些非平凡部分[-50K,50K]永远不会实现.然而,随着越来越多的随机变量的总结,实现的数量呈指数增长,而跨度仅增加线性,因此跨度中的数字密度随时间增加.这将会杀死哈马勒的好处. 所以问题是:如何有效地解决这个问题?需要解决方案来计算电力交易中的风险价值,其中所有分布都是经验性的,并且没有普通分布,因此公式是没有用的,我们只能模拟. 使用数学被认为是我们部门一半的第一选择.是数学家.但是,我们要添加的发行版的行为表现不佳,COUNT = 720是极端的.更有可能的是,我们将对每日风险价值使用COUNT = 24.考虑到分布的不良行为,对于COUNT = 24,中心极限定理不会太紧密(SUM(A1,A2,…,A24)的发行版不会接近正常).当我们计算可能的风险时,我们希望尽可能准确地获得一个数字. 预期的用途是:您有一些操作的小时卡车.现金流一小时的分配是r.v.对于下一个小时,它是r.v. B等等,你的问题是:99%的病例中最大的损失是多少?因此,您可以对24小时内的每一个现金流进行建模,并将这些现金流作为随机变量,以便在一整天内获得总体卡夫洛的分布.然后你拿0.01分位数. 解决方法
尝试减少完成添加所需的通行次数,可能会将其减少到每个列表的单次通行,包括最后一次.
我不认为你可以减少增加的总数. 此外,您应该研究并行算法和多线程(如果适用). 在这一点上,大多数处理器能够并行执行添加,给出适当的指令(SSE),这将增加更多的时间(仍然不能解决复杂性问题). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |