问题标签 [binomial-coefficients]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
151 浏览

permutation - 索引排列有重复

给定一个长度为 n 的数组,我需要打印出数组的字典索引(从零开始索引)。字典索引本质上是给定数组如果放置在包含原始数组的所有可能排列的超级数组中的位置。

事实证明这并不是那么困难(唯一元素排列),但我现在的问题是制作相同的算法,但对于包含相同元素重复项的数组。

这是一个示例图表,显示了一个小数组的一些可能排列,以及它们各自的预期返回值:

最重要的是,我想在不生成其他排列来解决问题的情况下执行此操作(例如,我不想生成小于给定排列的所有排列)。

我正在寻找伪代码——只要我能理解这个概念,就不需要特定的语言。即使没有伪代码的计算原理也可以。

我见过一些实现类似的实现,但对于二进制字符串(仅包含两种不同类型的元素),他们使用二项式系数来完成工作。希望这会有所帮助。

0 投票
2 回答
231 浏览

c++ - 计算ncr的说明

ncr当我遇到这篇文章时,我正在阅读可能的有效计算方法 。

哪种计算 nCr 的方法更好

这里给出的第二个答案,我无法理解。代码是:

这将是什么复杂性?我试着用一个例子来做,答案是正确的,但这些条件是什么?

0 投票
1 回答
404 浏览

java - 编程中的模块化算术

谁能解释一下模块化算术在编程中的工作原理?我知道它用于对大值进行操作。

例如,使用 int 数据类型计算 B(1000000, 2) 的二项式系数。我假设我们不能使用 int 数据类型进行乘法运算,因为它涉及计算像 1000000 这样的大值的阶乘!它有数百万位数字,不适合 32 位或 64 位整数。

我知道模运算用于这类问题,但我不明白它是如何工作的。

0 投票
2 回答
501 浏览

haskell - 大集合上的梳子不计算 Haskell

我正在用haskell编写一个combs函数它需要做的是,当我为它提供一副牌时,给我从那个大小为x的牌组中可能的每一种手组合

这是相关代码

但是,当我要求它计算梳子 5 [1..52] 时,例如一副牌中的 5 手牌,它不会提供结果,并且会持续运行很长时间
有谁知道问题出在哪里是以及如何加速这个算法?

0 投票
1 回答
709 浏览

c++ - 为计算 nCr 值而编写的程序 (C++)

我写了下面的代码来计算 n 个 testCount 值的 nCr。它似乎对我的价值观很好,但黑客地球的测试用例失败了,问题链接http://www.hackerearth.com/problem/golf/minimal-combinatorial/description/ 谁能告诉我我的逻辑中潜在的谬误是什么

` 简化分子和分母的情况

} `

0 投票
2 回答
472 浏览

c++ - c++中较大值的数学计算

这是一个非常简单的程序,有 t 个测试用例,我们必须找到 nCr=n!/r!*(nr)!。所以它适用于较小的值,如 20C2,但不适用于较大的值,如 100C10。它给出 32C2=-6 ,100C10 浮点异常。如何使它为 1<=n<=r<=1000 ?? 注意:我不是要求 long double 或不想将其更改为 float。答案应该类似于 100C10 = 17310309456440 类似 989C45=?

0 投票
4 回答
5453 浏览

c++ - C ++:如何产生帕斯卡三角形的第'n'行?

这是我的代码:

如何更改它以使其仅显示第 n 行而不是整个三角形?TIA。

0 投票
0 回答
275 浏览

python - 使用大二项式系数计算时出现问题

介绍。

我正在尝试使用 IPython 绘制超几何分布。分布的概率函数包含三个二项式系数。

由于我将放入系数中的值非常大,例如。1e28,我决定制作自己的函数来计算二项式系数,其中我使用斯特林近似的二阶。

由于二项式系数太大而无法放入变量并直接相乘,我决定改为计算它们的对数并将它们相加。为了获得最终概率,我只需将结果放入exp函数中。由于概率具有相对“正常”的大小(其最大值为 2.7e24),因此应该不会再有问题了……除非有。

问题。

我提到的“结果”是概率的对数,它最终比它应该的值大得多,值范围从 -6.2e24 到 1.3e14。相比之下,数学最大值的对数大约为 56。

另一个问题是图上的曲线在放大时非常参差不齐。缩小时一切看起来都很好。曲线是平滑的,其最大值位于分布的平均值处:

绘制整个域。

但是当我放大概率函数的大部分峰值的平均值时,因为标准偏差非常小,我得到了这个:

放大平均值。

红线表示平均值,黑线是平均值 +/- 标准偏差。虽然它看起来很漂亮,但它不是我需要的平滑曲线。

问题。

有人可以解释为什么(1)值如此之大和(2)为什么曲线是锯齿状的以及如何修复它们?

代码。

0 投票
1 回答
1715 浏览

r - R中的选择函数

我对 R 中的 lchoose 函数的理解很简单,就是 lchoose(a,b) = log(choose(a,b))。然而,我发现:

所以 lchoose 不是选择函数输出的日志。为什么会这样?

0 投票
1 回答
74 浏览

java - 使用记忆方法的二项式系数

我编写了一个函数,它使用 memoizizion 方法递归地计算 n 和 k 的二项式系数项,OutOfBoundException当我执行时,我会很高兴听到一些关于我所犯错误的指示。谢谢你们。