【问题标题】:Calculating large exponential shares / probabilities计算大指数份额/概率
【发布时间】:2020-01-23 20:10:20
【问题描述】:

假设有一个事件空间 ES。 假设有一些对象集合 OS[]。 选择任何对象的概率是互不相交的。

现在,假设每个集合的大小基于分配给它的数字 X[i]。 每组的大小随着该数字呈指数增长。

用于求幂的底数 (B) 可能是欧拉数 (e),因为它具有良好的属性,但我们假设情况并非如此。

现在,我们在计算随机选择选定集合的任何成员的概率之后,同时记住每个集合的元数可能非常大。

知道概率序列后,它用于计算 P[i]*(C)。

我想知道这是否可以针对非常大的指数进行优化/近似,即以低内存消耗计算,即实现。

我发现的相关问题是here,但他们似乎只处理相反的概率。

//  Numerical example:

// A,C - constants, natural numbers
//exponents
        X[1] = 3432342332;
        X[2] = 55438849;
        X[3] = 34533;
//probabilities
        P1 = A^X[1]/(A^X[1]+A^X[2]+A^X[3]);
        P2 = A^X[2]/(A^X[1]+A^X[2]+A^X[3]);
        P3 = A^X[3]/(A^X[1]+A^X[2]+A^X[3]);

//Results
R1 = P1 *C;
R2 = P2 *C;
R3 = P3 *C;

当指数大于几百时,Excel 会失败。

【问题讨论】:

  • 你能添加一个数值例子吗?这肯定会有所帮助。
  • @Stratubas 我已经包含了一个示例。
  • “我使用幂运算的原因是我需要增加指数才能导致份额呈指数变化”您能否更彻底地解释这一点或为此添加一个示例?也许你可以通过不同的计算得到相同的结果
  • @Damien,我已经重构了整个问题。
  • 我们在谈论什么样的精度?乍一看,如果 P1 是 64 位浮点数,那么答案是 P1 = 1/3 for A = 1 and P1 = 1 for A >= 2。第二个结果的原因是 A^(X[1] - X[2]) 对于 A >= 2 来说是一个很大的数字,因此 A^X[1] 将比分母中的其余部分大得多,概率基本上为 1。或者我错过了什么?

标签: algorithm math optimization probability exp


【解决方案1】:

所以你有一个数字a>1,一个整数数组B n 元素,对于每个i,你要计算a^B[i] / (a^B[1] + a^B[2] + ... + a^B[n])

C[i] = B[i] - max(B[1], ..., B[n])。然后你计算 a^C[i] / (a^C[1] + a^C[2] + ... + a^C[n])。由于C 的所有元素现在都是非正数,因此您不必关心溢出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多