我试图仅使用long来计算迭代概率。换句话说,我知道当p是每次出现的概率而x是出现的次数时,我可以用P(x)= 1-(1-p)^ x的闭合形式来计算该概率。但是我不能使用浮点数,所以不能仅仅迭代地乘法。
该函数取x(出现的次数)。它可以访问p的分子和分母的全局变量(例如d = 100,000,000,而p = 1/200的n1 = 500,000)。然后它将返回一个long,n2,为此P(迭代)= n2 / d。
我知道最终n2会接近d,但出于我的目的,它永远不会真正接近d。我只希望能够做到这一点,而又不会冒着溢出的风险,并且只能访问64位寄存器。
答案 0 :(得分:0)
如果参数值没有限制,那是不可能的。
例如,在p = 99/100和x = 10的情况下,没有比例的64位整数可以表示结果。
即使比率可行,您也可能会发现准确性严重下降。
答案 1 :(得分:0)
如果您对分母d = 100,000,000可以拥有的精度没问题,那么有理数算法将实现您想要的效果。计算中的中间结果可能需要超过64位,但是最后,您需要将最终结果四舍五入为64位的分子和分母。