【问题标题】:Combine four items of value one in four random bins, all combinations in MATLAB?在四个随机箱中组合四个值一的项目,MATLAB中的所有组合?
【发布时间】:2015-12-16 02:12:59
【问题描述】:

我正在尝试使用nchoosek(v,k) 来获得四个价值项的所有可能组合,其中一项随机分布在 4 个位置上。我的目标是得到这个:

[4 0 0 0;
0 4 0 0;
0 0 4 0;
0 0 0 4;
3 1 0 0;
3 0 1 0;
3 0 0 1;
1 3 0 0;
0 3 1 0;
0 3 0 1;
1 0 3 0;
0 1 3 0;
0 0 3 1;
1 0 0 3;
0 1 0 3;
0 0 1 3;
2 2 0 0;
2 0 2 0;
2 0 0 2;
0 2 2 0;
0 2 0 2;
0 0 2 2;
2 1 1 0;
2 1 0 1;
2 0 1 1;
1 2 1 0;
1 2 0 1;
0 2 1 1;
1 1 2 0;
1 0 2 1;
0 1 2 1;
1 1 0 2;
1 0 1 2;
0 1 1 2;
1 1 1 1];

但是我不确定如何正确输入vk 以使用nchoosek() 实现此目的。无论我在v 中输入什么,我都会得到输出。

nchoosek([1,1,1,1], 4)
[1,1,1,1]

nchoosek([1,0,0,0], 4)
[1,0,0,0]

nchoosek([4,0,0,0], 4)
[4,0,0,0]

nchoosek([1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1], 4)
Error using nchoosek (line 29)
The first argument has to be a scalar or a vector.

简而言之,我没有得到nchoosek(v,k) 的输入和输出。有人知道怎么做吗?我在这里lookedupsome 提出问题,但他们并没有帮助我。

【问题讨论】:

    标签: matlab syntax probability combinatorics


    【解决方案1】:

    暴力破解:

    [d1,d2,d3,d4]=ndgrid(0:4,0:4,0:4,0:4);
    d = d1+d2+d3+d4;
    i = find(d==4);
    [d1(i),d2(i),d3(i),d4(i)]
    

    【讨论】:

    • 解决问题的代码不多,谢谢。我希望只是调用一个函数,也许 nchoosek 并没有做我认为的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多