在四个随机区间中组合四个值的项目,在MATLAB中的所有组合?

时间:2014-12-11 11:10:39

标签: matlab syntax probability combinatorics

我正在尝试使用nchoosek(v,k)来获得4个值随机分布在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)的输入和输出。有人知道怎么做吗?我looked up some在这里提问,但他们并没有帮助我。

1 个答案:

答案 0 :(得分:3)

蛮力解决方案:

[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)]