标签: binomial-coefficients

在Matlab中获取符号多项式的系数

我有一个Matlab函数,返回一个形式的多项式:

poly = ax^2 + bx*y + cy^2
Run Code Online (Sandbox Code Playgroud)

其中a,b和c是常量,x和y是符号(类sym).

我想得到表单中多项式的系数[a b c],但我遇到了以下问题.如果函数返回poly = y^2,那么coeffs(poly) = 1.我不想要这个 - 我希望它能够回归[0 0 1].

如何创建一个函数,它将以我想要的形式给出符号多项式的系数?

matlab symbolic-math polynomial-math binomial-coefficients

4
推荐指数
1
解决办法
6057
查看次数

%mod兼容生成二项式系数的方法

我想优化我的程序的一部分,我计算二项式系数之和到K.即

C(N,0) + C(N,1) + ... + C(N,K)
Run Code Online (Sandbox Code Playgroud)

由于值超出数据类型(long long)可以支持,我将计算值mod M 并且正在寻找执行此操作的过程.

目前,我已经用Pascal的Triangle完成了它,但似乎需要一点负担.所以,我想知道是否有其他有效的方法来做到这一点.我已经考虑过卢卡斯的定理,虽然MI已经足够大,所以C(N,k)失控了!

任何指针,如何以不同的方式做到这一点,也许可以用一些其他整齐的表达来计算总和.如果不是,我将把它与Pascal的Triangle方法本身一起留下.

谢谢,

这是我到目前为止O(N^2):

#define MAX 1000000007
long long NChooseK_Sum(int N, int K){
    vector<long long> prevV, V;
    prevV.push_back(1);     prevV.push_back(1);
    for(int i=2;i<=N;++i){
            V.clear();
            V.push_back(1);
            for(int j=0;j<(i-1);++j){
                    long long val = prevV[j] + prevV[j+1];
                    if(val >= MAX)
                            val %= MAX;
                    V.push_back(val);
            }
            V.push_back(1);
            prevV = V;
    }
    long long res=0;
    for(int i=0;i<=K;++i){
            res+=V[i];
            if(res >= MAX)
                    res %= MAX;
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

c++ algorithm binomial-coefficients

3
推荐指数
1
解决办法
1113
查看次数

如何随机采样二项式事物?

比如我想随机排列0、1(分别为50%)10次。所以,应该有五个“0”和五个“1”。

但是,当我使用时:

rbinom(10,1,0.5)
Run Code Online (Sandbox Code Playgroud)

有时,它会生成四个“0”和六个“1”。

我注意到该sample()功能也有这个问题。

应该有五个“0”和五个“1”,并且顺序应该是随机的。

simulation r binomial-coefficients

3
推荐指数
2
解决办法
94
查看次数

您将如何以最紧凑的方式为大型组合编写此算法?

k可以从N项目检索的项目组合的数量由以下公式描述.

             N! 
c =  ___________________ 
       (k! * (N - k)!)
Run Code Online (Sandbox Code Playgroud)

一个例子是6 Balls可以从48 Balls彩票抽奖的鼓中抽取多少组合.

优化此公式以使用最小的O时间复杂度运行

这个问题的灵感来自新的WolframAlpha数学引擎,以及它可以非常快速地计算出非常大的组合.例如,随后在另一个论坛上讨论该主题.

http://www97.wolframalpha.com/input/?i=20000000+Choose+15000000

在一些人对解决方案进行了尝试之后,我会发布一些来自该讨论的信息/链接.

任何语言都可以接受.

language-agnostic performance combinations binomial-coefficients

2
推荐指数
2
解决办法
2214
查看次数

在Java中实现选择符号的好方法是什么?

...最好是用Java.这是我有的:

//x choose y
public static double choose(int x, int y) {
    if (y < 0 || y > x) return 0;
    if (y == 0 || y == x) return 1;

    double answer = 1;
    for (int i = x-y+1; i <= x; i++) {
        answer = answer * i;
    }
    for (int j = y; j > 1; j--) {
        answer = answer / j;
    }
    return answer;
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更好的方法来做到这一点?

java combinations binomial-coefficients

2
推荐指数
3
解决办法
1万
查看次数

Haskell中的尾递归二项式系数函数

我有一个函数来计算Haskell中的二项式系数,它看起来像这样:

binom :: Int -> Int -> Int
binom n 0 = 1
binom 0 k = 0
binom n k = binom (n-1) (k-1) * n `div` k
Run Code Online (Sandbox Code Playgroud)

是否可以修改它并使其尾递归?

recursion haskell tail-recursion binomial-coefficients

2
推荐指数
1
解决办法
2031
查看次数

Sage多项式系数包括零

例如,如果我们在SAGE中有多元多项式

    f=3*x^3*y^2+x*y+3
Run Code Online (Sandbox Code Playgroud)

如何显示系数的完整列表,包括最大dregree项和常数之间缺失项的零值.

    P.<x,y> = PolynomialRing(ZZ, 2, order='lex')
    f=3*x^2*y^2+x*y+3
    f.coefficients()
Run Code Online (Sandbox Code Playgroud)

给我列表

    [3, 1, 3]
Run Code Online (Sandbox Code Playgroud)

但我希望将"完整"列表放入矩阵中.在上面的例子中它应该是

    [3, ,0 , 0, 1, 0, 0, 0, 0, 3]
Run Code Online (Sandbox Code Playgroud)

对应条款:

    x^2*y^2, x^2*y, x*y^2, x*y, x^2, y^2, x, y, constant
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

sage binomial-coefficients

2
推荐指数
1
解决办法
505
查看次数

二项式实验

如何使用二项式函数来解决这个实验:

 number of trials -> n=18, 
 p=10%  
 success x=2 
Run Code Online (Sandbox Code Playgroud)

答案是28%。我正在使用Binomial(18, 0.1)但是我如何传递n=2?

julia> d=Binomial(18,0.1)
Binomial{Float64}(n=18, p=0.1)
pdf(d,2)
Run Code Online (Sandbox Code Playgroud)

我该如何在 Julia 中解决这个问题?

binomial-coefficients julia

2
推荐指数
1
解决办法
1188
查看次数

Python - 将所有可能的 5 种组合编码为整数

我有一组 25 个整数,范围从 0 到 24,我的应用程序涉及选择其中 5 个(没有重复值,没有值可以选择多次),获得像这样的组合 [ 15, 7, 12、3、22]。重要的是要考虑到前面的组合被认为等于[7, 22, 12, 15, 3],顺序并不重要,只有值才重要。

通过应用二项式系数(25 选 5),我们可以发现有 53.130 种可能的组合。我想将所有可能的组合编码为一个整数,以便从 0 到 53129 的所有值都链接到一个组合。

python encoding combinations integer binomial-coefficients

2
推荐指数
1
解决办法
80
查看次数

使用一维数组设计二项式系数算法

我已经设计了以下算法,使用二维数组确定二项式系数。例如,要计算 n 选择 k 的二项式系数,我们可以创建一个二维数组,如下所示:

int[][] arr = new int[n][k];
Run Code Online (Sandbox Code Playgroud)

我们可以通过以下方式填充数组:

for(int i = 0; i <= n; i++){
   for(int j = 0; j <= minimum(i, k); j++){
      if(j == 0 || i == j){
         arr[i, j] = 1;
      } else{
         arr[i, j] = arr[i - 1, j - 1] + arr[i - 1, j];
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,我需要重新设计该算法以使用索引 0-k 的一维数组。我很难确定如何做到这一点。我从小步开始,并意识到一些常见现象:

  • 如果 k = 0,则 arr[0] 将为 1,并且无论 n 如何,都会返回该值。
  • 如果 k = 1,arr[0] 将为 1,arr[1] 应该为 n(如果我在循环中设计它)。

当我说 k …

arrays algorithm binomial-coefficients pascals-triangle

1
推荐指数
1
解决办法
1950
查看次数