为简单起见,有5个名为B1,B2,B3,B4,B5
的球。然后有3个方框,比如b1,b2,b3
。
例如,有3^5
种方式: -
B1,B2|B4|B3,B5
B1,B4|B5|B3,B2
...
我的实施如下: -
function distributions=compute_balls_in_boxes(balls,boxes)
c = dec2base(0:boxes^balls-1,boxes,balls)-'0';
distributions=cell(boxes^balls,1);
for i=1:size(c,1)
curr=cell(boxes,1);
for j=1:balls
curr{c(i,j)+1}=[curr{c(i,j)+1};j];
end
distributions{i}=curr;
end
end
python解决方案是available。我正在寻找更高效的matlab方法。有人可以建议更快的matlab实现吗?例如,我在我的解决方案中使用细胞细胞,我认为这是非常低效的。即使dec2base
也是一个庞大的功能。