algorithm - 计算大指数份额/概率
问题描述
假设有一个事件空间 ES。假设有一些对象集 OS[]。选择任何对象的概率是互不相交的。
现在,假设每个集合的大小基于分配给它的数字 X[i]。每组的大小随着该数字呈指数增长。
由于其良好的特性,用于求幂的底数 (B) 可能是欧拉数 (e),但我们假设情况可能并非如此。
现在,我们正在计算随机选择选定集合中任何成员的概率,同时记住每个集合的元数可能非常大。
在知道概率序列后,它用于计算 P[i]*(C)。
我想知道这是否可以针对非常大的指数进行优化/近似,即以低内存消耗计算,即实现。
我发现的相关问题 仍然是他们似乎只解决相反的概率。
// 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 会失败。
解决方案
所以你有一个 number 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
现在的所有元素都是非正数,因此您不必关心溢出。
推荐阅读
- swift - 带有 UIImage 的 UNNotificationAttachment 超出内存
- c - 结合使用 fgets 和 strtok 将输入转换为标记
- kotlin - 无法加载 AndroidJUnit4 的委托运行程序“androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner”
- continuous-integration - 如何仅在 GitlabCi 运行器中的 HEAD 提交时运行管道?
- laravel - 数据表显示分页器链接下方的空格
- c# - Intel MKL LAPACKE_dsyevd with n > 32766 --> 没有足够的内存在 LAPACKE_dsyevd 中分配工作数组
- http - 使用 AREST 框架在 kotlin 中创建带有请求正文的 GET 方法
- opencart - 我的 opencart 结帐页面显示,内部服务器错误
- matlab - 将 DICOM 文件堆叠成一个多切片系列
- javascript - Android模拟器上的React-Natiove错误“null不是对象(评估'blob.data')readAsText”